如何在下拉菜单中填充闪亮应用程序内子目录的 csv 文件。?
How to populate csv files of a subdirectory inside shiny app in drop-down menu.?
可能重复
我有一个闪亮的小应用程序,其中包含一些供用户使用的下拉选项。我在闪亮的应用程序中创建了一个子目录,比如 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 文件访问 shiny 应用程序中的 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
当你调用list.files
时,你需要指定你想要列出文件的路径,默认路径是当前目录,也就是你有ui.R
的目录和 server.R
文件。
尝试:
filenames <- list.files(path="data",pattern="\.csv")
您可以将此行放在 ui.R
文件中的 shinyUI(...)
之前。
对于你代码的第二部分,看起来你想要清理数据,你可以这样做(我将 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
带有逗号,如果您的 csv
文件中的分隔符是逗号,这可能会导致问题。
可能重复
我有一个闪亮的小应用程序,其中包含一些供用户使用的下拉选项。我在闪亮的应用程序中创建了一个子目录,比如 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 文件访问 shiny 应用程序中的 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
当你调用list.files
时,你需要指定你想要列出文件的路径,默认路径是当前目录,也就是你有ui.R
的目录和 server.R
文件。
尝试:
filenames <- list.files(path="data",pattern="\.csv")
您可以将此行放在 ui.R
文件中的 shinyUI(...)
之前。
对于你代码的第二部分,看起来你想要清理数据,你可以这样做(我将 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
带有逗号,如果您的 csv
文件中的分隔符是逗号,这可能会导致问题。