我试图提取名为tests.stats()的个人函数的输出
我用return
语句创建一个函数:
return(c(list.test.1, list.test.2 ,list.test.3, list.test.4))
每个list.test.<i>
都是list
个对象。
在Shiny Server中:
outlist() <- reactive({
if(is.null(input$datafile)){
return()
}
if(is.null(input$varinteret)
&&is.null(input$vartemps)
&&is.null(input$varsujet)
&&is.null(input$varprod)
&&is.null(input$apparie)
&&is.null(input$tempsrefouinon)
&&is.null(input$prodrefouinon)
&&is.null(input$checkprod)
&&is.null(input$checkprodref)){
return()
} else {
data<-filedata()
res <- tests.stats(data = data(),
y = input$varinteret,
group = input$varprod,
group2 = input$vartemps,
sujet = input$varsujet,
apparie = input$apparie,
temoin = input$prodrefouinon,
TemoinName = input$checkprodref)
}
和错误消息:
Warning: Error in <-: invalid (NULL) left side of assignment
Stack trace (innermost first):
40: server [C:\Users\itm\Desktop\Documents\appli/server.R#357]
1: shiny::runApp
Error in outlist() <- reactive({ : invalid (NULL) left side of assignment
为什么我收到此错误?
答案 0 :(得分:9)
这是因为这项任务的发生:
outlist() <- reactive({...})
这是不正确的语法,因为您告诉Shiny outlist
是已定义的反应式表达式,您应该对其进行评估。然后,您尝试使用Shiny不理解的语法为此反应式表达式分配内容。
因此,如果您改为使用:
outlist <- reactive({...})
您现在已经正确地将outlist
定义为可以在代码中的其他地方使用outlist()
调用的反应性Shiny对象。
这个主题的文档非常好,可以在这里找到:
http://shiny.rstudio.com/reference/shiny/latest/reactive.html
http://shiny.rstudio.com/tutorial/lesson6/
您似乎也可以使用validate
和need
来处理需要输入的海洋:
http://shiny.rstudio.com/articles/validation.html
还有哈德利勋爵的代码风格指南: