R认为参数是一个函数,但实际上是一个变量

R认为参数是一个函数,但实际上是一个变量,r,function,R,Function,在web应用程序的RShiny包中,当UI中的某些内容发生更改时,会自动更新反应变量。当您使用这些变量时,您需要使用以下语法:变量名末尾带有括号的变量 我需要这个被动变量作为我的一个函数的输入。我在server.R部分调用这个函数。在那里我使用functioninfile=fa_archive。。。但R认为fa_archive是一个函数而不是一个变量。可能是因为括号,但事实并非如此。我100%确定变量fa_archive已定义。在此之前,我只需要fa_archive[[1]]作为输入,然后我的函

在web应用程序的RShiny包中,当UI中的某些内容发生更改时,会自动更新反应变量。当您使用这些变量时,您需要使用以下语法:变量名末尾带有括号的变量

我需要这个被动变量作为我的一个函数的输入。我在server.R部分调用这个函数。在那里我使用functioninfile=fa_archive。。。但R认为fa_archive是一个函数而不是一个变量。可能是因为括号,但事实并非如此。我100%确定变量fa_archive已定义。在此之前,我只需要fa_archive[[1]]作为输入,然后我的函数就可以正常工作了。但是现在我需要升级我的函数,以便一次包含更多的文件,当我在函数中使用fa_archive作为输入变量时,它会将其识别为函数并返回

错误:找不到函数fa_存档

我并没有真正尝试解决这个问题,因为它看起来很奇怪,使用完整变量而不是它的一部分[[1]]会彻底改变这一点。这是我的相关代码

fa_archive <- list( 
                  reactive({ fa_archive_function(input$model1, as.integer(input$lag1)) }),
                  reactive({ fa_archive_function(input$model2, as.integer(input$lag2)) }),
                  reactive({ fa_archive_function(input$model3, as.integer(input$lag3)) }),
                  reactive({ fa_archive_function(input$model4, as.integer(input$lag4)) }))


output$plotSounding1Da <- renderPlot({ plot_profile(infile= fa_archive() , fcdate=fcdate(), ldt=ldt(), prm=input$prmSounding, location=input$location, recent=recent(), add=FALSE)}, width=400, height=500)
当您使用[reactive]变量时,您需要使用以下语法:变量名称末尾带有括号的变量

对。但这只适用于被动变量。你的fa_档案不是一个反应变量,它是一个正常的R lits。这就是R抱怨的原因


不过,仅仅围绕列表调用使用reactive…可能不会起作用,因为您的代码还有其他问题需要解决。如果不知道plot_profile的具体功能,它就不可能期望一个被动组件列表作为参数。

如果在renderPlot中使用fa_archive而不是fa_archive会怎么样…错误:无效的'file'参数,因此不起作用。renderPlot{plot_profileinfile=fa_archive[[1]],…}可以清楚地工作。好的,但是为什么fa_archive[[1]]可以工作呢?plot_配置文件确实需要一个可以更改的变量,因为在UI中,如果您更改输入模型,您希望在屏幕上显示不同的绘图。我的意思是,在我改变这个小细节之前,一切都很顺利。@cfredemon因为我错了:renderPlot隐式接受一个反应式表达式。但是问题是你的fa_档案不是一个被动变量,所以你不能将它作为一个变量使用。哦,它还有很多其他被动输入变量,比如日期等等。。。在这段代码的历史上从来没有造成过任何麻烦哦,好吧,我明白了,实际上只有列表fa_归档的元素是被动的。谢谢!