可能重复
Cannot populate drop down menu dynamically in R shiny
我有一个小巧的应用程序,为用户提供了一些下拉选项。我在闪亮的app中创建了一个子目录data
,其中包含csv文件,显示在下拉菜单中。我使用了以下代码,但我无法访问data
子目录中的文件。
关于ui.r:
filenames <- list.files(pattern="\\.csv")
selectInput(inputId="dataset",label= "Choose platform annotation file",filenames)
server.r:
dataInput <- reactive({
if (grepl("[/\\\\]", input$dataset)) {
stop("Invalid dataset")
}
read.csv(file.path("data", input$dataset))
})
output$annotation <- renderDataTable({
withProgress(message = 'Loading Data . . .', {
dataInput()
})
})
上面的代码允许我访问csv文件,如果它们在我的server.r
和ui.r
内部,而不是在闪亮的应用程序内的单独子目录中。
我也想知道这是访问上述代码数据的正确方法,因为我无法在下面的代码中进一步访问数据。
inputdata <- reactive({
df1 <- data.frame()
df1 <- dataInput()
if (is.null(df1))
return(NULL)
df1[] <- lapply(df1, as.character)
df1 <- df1[df1[,3]!='',]
df1 <- df1[!grepl('[/]', df1$Gene.Title),]
})
我也尝试了这个
filenames <- list.files(pattern="\\.csv$data") ## data is my folder inside shiny app.
使用csv文件访问闪亮应用内的data
子目录,但无法做到。
已编辑:输入文件示例
ID Gene Title Gene Symbol
1007_s_at discoidin domain receptor tyrosine kinase 1 DDR1
1053_at replication factor C (activator 1) 2, 40kDa 7-Mar
117_at heat shock 70kDa protein 6 (HSP70B') HSPA6
121_at paired box 8 PAX8
1255_g_at guanylate cyclase activator 1A (retina) GUCA1A
1294_at ubiquitin-like modifier activating enzyme 7 UBA7
1320_at protein tyrosine phosphatase, non-receptor PTPN21
1405_i_at chemokine (C-C motif) ligand 5 CCL5/CCL6
1431_at
1438_at EPH receptor B3 EPHB3
1487_at estrogen-related receptor alpha ESRRA
1494_f_at cytochrome P450, family 2 CYP2A6/CYP2
答案 0 :(得分:1)
当您致电list.files
时,您需要指定要列出文件的路径,默认路径是当前目录,即您拥有ui.R
和{的目录{1}}档案。
尝试:
server.R
您可以将此行放在filenames <- list.files(path="data",pattern="\\.csv")
文件中的shinyUI(...)
之前。
对于代码的第二部分,您可能会想要清理数据(我将ui.R
更改为inputdata
以使其更清晰):
clean_data
此外,查看输入文件示例中有很多clean_data <- reactive({
#get the data
df1 <- dataInput()
if (is.null(df1))
return(NULL)
df1[] <- lapply(df1, as.character)
#looks for lines that have only zero or more blanks or a slash in column 3 and removes them
df1 <- df1[!grepl("$ *^|/",df1[,3]),]
df1
})
#do what you want with the data, for expample render it as another table
output$annotation <- renderDataTable({
withProgress(message = 'Loading Data . . .', {
clean_data()
})
})
有逗号,如果Gene title
文件中的分隔符是逗号,则可能会出现问题。