[英]R Shiny - Using Selectinput as column selection to subset data frame
我正在使用Shiny接收用戶的txt文件。 文件的組成完全取決於用戶-文件沒有設置的標頭。
data_vals <- reactive({
file1 <- input$file1
if (is.null(file1))return(NULL)
read.table(fill=TRUE,file=input$file1$datapath, header=TRUE, colClasses =
"factor")})
從該文件中,我從用戶提交的頭文件中創建一個下拉列表:
observe({
req(input$file1)
dsnames <- names(data_labels())
cb_options <- list()
cb_options[dsnames] <- dsnames
output$choose_filt1<- renderUI({
selectInput("filt1", "Filter Level 1", cb_options)
})
})
然后,將顯示列表中唯一項的復選框,以供用戶取消選擇。
observe({
filt1_data <- data_labels()[,input$filt1]
filt1_uni <- unique(filt1_data)
output$inCheckboxGroup1 <- renderUI({
checkboxGroupInput("inCheckboxGroup1", "Filter Level 1 Options:",
choices=filt1_uni,
selected=filt1_uni)
})
})
我想使用某種類型的子集來按列(即input $ filt1)和選中的框(input $ inCheckboxGroup1)過濾data_vals。 我不確定如何執行此操作,因為子集(data_vals,NAME%in%input $ inCheckboxGroup1)正在尋找NAME作為列標題,而不是尋找用戶選擇的輸入。
我嘗試使用:
subset(data_vals, input$inCheckboxGroup1 %in$ input$inCheckboxGroup1)
但是,這不會產生表格(空白)。 我還使用了: subset(data_vals, Column1Header %in% input$inCheckboxGroup1)
,它可以工作,所以我知道它不是代碼的復選框部分。
是否可以按照我描述的方式使用子集,或者是否有其他工具可以使用?
我認為您可以通過不使用subset
來解決問題,因為您的列名是一個變量。 請參閱以下示例:
A = 1
B ='am'
# This does not work
mtcars2 = subset(mtcars, B %in% A)
# This works
mtcars2 = mtcars[mtcars[,B] %in% A,]
因此,在您的情況下,您可以使用:
data_vals = data_vals[data_vals[,input$filt1] %in% input$checkboxGroup1,]
希望這可以幫助!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.