shinyApp :获取文件夹作为输入并将文件夹内的文件用作 R 函数的输入
shinyApp : Getting a folder as input and use the files inside the folder as input of a R function
我是 shiny 的新手,我想创建一个基本的应用程序,从用户那里获取一些信息,然后在后台 运行 一些 R 代码并保存结果。
(我可能最终会绘制结果,但这应该不难。)
但是,我在使用我获得的文件夹作为输入时遇到问题。
运行 应用程序后,我得到 NA 作为我的输出。我也试过 list.files 而不是 path.expand,但同样的问题。
如果有人能告诉我我做错了什么,我将不胜感激。
p.s。我也想使用 checkGroup 输入,用户可以选择所有 3 个选项。
基于闪亮的示例:
source("~myfunction.R")
ui<-fluidPage(
fluidRow(
column(8,
shinyDirButton("dir", "Chose a directory", "Upload")
),
column(3,
img(src = "example.png", height = 100, width = 200)
))
,
fluidRow(
column(3,
checkboxGroupInput("checkGroup",
h3("Check one or all"),
choices = list("Plot" = 1,
"Cleaning" = 2,
"CSV" = 3),
selected = 1))),
verbatimTextOutput('rawInputValue'),
verbatimTextOutput('filepaths')
)
server<- function(input, output,session) {
volumes = getVolumes()
observe({
shinyDirChoose(input, "dir", roots = volumes, session = session)
dir.path <- parseDirPath(c(home = '~'),input$dir)
output$rawInputValue<-renderText({print(dir.path)})
all.path<- path.expand(dir.path)
output$filepaths<-renderText({all.path})
# myfunction(all.path)
})
}
在服务器代码中,您需要将对 shinyDirchoos 的调用移到观察者之外,并修复对 parseDirPath 的调用。这样的事情应该有效:
server<- function(input, output,session) {
volumes = getVolumes()
shinyDirChoose(input, "dir", roots = volumes, session = session)
observe({
if(length(input$dir) != 1 ) {
dir.path <- parseDirPath(volumes,input$dir)
output$rawInputValue<-renderText({dir.path})
}
})
}
我是 shiny 的新手,我想创建一个基本的应用程序,从用户那里获取一些信息,然后在后台 运行 一些 R 代码并保存结果。 (我可能最终会绘制结果,但这应该不难。) 但是,我在使用我获得的文件夹作为输入时遇到问题。 运行 应用程序后,我得到 NA 作为我的输出。我也试过 list.files 而不是 path.expand,但同样的问题。 如果有人能告诉我我做错了什么,我将不胜感激。 p.s。我也想使用 checkGroup 输入,用户可以选择所有 3 个选项。
基于闪亮的示例:
source("~myfunction.R")
ui<-fluidPage(
fluidRow(
column(8,
shinyDirButton("dir", "Chose a directory", "Upload")
),
column(3,
img(src = "example.png", height = 100, width = 200)
))
,
fluidRow(
column(3,
checkboxGroupInput("checkGroup",
h3("Check one or all"),
choices = list("Plot" = 1,
"Cleaning" = 2,
"CSV" = 3),
selected = 1))),
verbatimTextOutput('rawInputValue'),
verbatimTextOutput('filepaths')
)
server<- function(input, output,session) {
volumes = getVolumes()
observe({
shinyDirChoose(input, "dir", roots = volumes, session = session)
dir.path <- parseDirPath(c(home = '~'),input$dir)
output$rawInputValue<-renderText({print(dir.path)})
all.path<- path.expand(dir.path)
output$filepaths<-renderText({all.path})
# myfunction(all.path)
})
}
在服务器代码中,您需要将对 shinyDirchoos 的调用移到观察者之外,并修复对 parseDirPath 的调用。这样的事情应该有效:
server<- function(input, output,session) {
volumes = getVolumes()
shinyDirChoose(input, "dir", roots = volumes, session = session)
observe({
if(length(input$dir) != 1 ) {
dir.path <- parseDirPath(volumes,input$dir)
output$rawInputValue<-renderText({dir.path})
}
})
}