我正在尝试提取名为tests.stats()的个人函数的输出
我用return声明创建了一个函数:
return(c(list.test.1, list.test.2 ,list.test.3, list.test.4))
Run Code Online (Sandbox Code Playgroud)
每个人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)
}
Run Code Online (Sandbox Code Playgroud)
和错误消息:
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
Run Code Online (Sandbox Code Playgroud)
为什么我收到此错误?
发生这种情况是因为这项任务:
outlist() <- reactive({...})
Run Code Online (Sandbox Code Playgroud)
这是不正确的语法,因为您告诉Shiny这outlist是一个已定义的反应式表达式,您应该对其进行评估.然后,您尝试使用Shiny不理解的语法为此反应式表达式分配内容.
因此,如果您改为使用:
outlist <- reactive({...})
Run Code Online (Sandbox Code Playgroud)
您现在已经正确地将其定义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
还有哈德利勋爵的代码风格指南:
http://adv-r.had.co.nz/Style.html