【发布时间】:2016-08-12 15:22:20
【问题描述】:
我一直在开发一个 R Shiny 应用程序,该应用程序使用两个文件夹中的内容来执行一些分析,但我很难使用 ShinyFiles 应用程序处理反应式表达式。
这是我遇到问题的部分:
shinyServer(function(input, output, session) {
volumes = getVolumes()
folderInput1<- reactive({
shinyDirChoose(input, 'directory', roots= volumes, session=session, restrictions=system.file(package='base'))
return(parseDirPath(volumes, input$directory))})
folderInput2<- reactive ({
shinyDirChoose(input, 'directory2', roots=volumes, session=session, restrictions=system.file(package='base'))
return(parseDirPath(volumes, input$directory2 ))})
output$directorypath = renderPrint({folderInput1()})
output$directorypath2 = renderPrint({folderInput2()})
files1 <- list.files(path=folderInput1(), pattern="*.csv", full.names=T)
nFiles1 = length(files1)
files2 <- list.files(path= folderInput2(), pattern="*.csv", full.names=T)
nFiles2 = length(files2)
这是我收到的错误消息: .getReactiveEnvironment()$currentContext() 中的错误:如果没有活动的反应上下文,则不允许操作。 (你试图做一些只能在反应式表达式或观察者内部完成的事情。)
当我只使用一次来自用户的输入文件夹时,我没有收到此错误。
这个问题已经解决了。谢谢!
现在,我在数据结构(如数据框)中使用反应式表达式时遇到了问题。例如:
folder_df = data.frame(matrix(0,ncol = 4, nrow = nFiles1()))
我收到以下错误消息: 矩阵错误(0,ncol = 4,nrow = nFiles1()):非数字矩阵范围
【问题讨论】:
-
确切的问题是什么?
-
我需要使用相同的输入文件夹来执行不同的分析。这是错误消息:.getReactiveEnvironment()$currentContext() 中的错误:如果没有活动的反应上下文,则不允许操作。 (您试图做一些只能在反应式表达式或观察者内部完成的事情。)
标签: r input shiny directory reactive-programming