我试图在我的自定义函数中调用 react 函数,但我做不到。执行此操作的最佳方法是什么,这是简化的代码,我不能将所有内容都作为功能参数传递,因为传递的内容太多了。
library(shiny);
myf<-function(){ return(psd()$y) }
shinyApp( ui = textOutput("test2"),
server = function(input, output) {
psd<-reactive({ return(data.frame(x=10,y=30)) })
output$test2 <- renderText({ myf() })
}
)
此代码生成错误:myf() 中的错误:找不到函数“psd”
调用使用 shinyserver 中其他函数的自定义函数的最佳方法是什么?
最佳答案
这取决于您是否希望您的函数也具有反应性。
在 react 性使用的情况下:
myf <- reactive({return(psd()$y})
如果你不希望它是 react 性的使用
myf <- function() {return(isolate(psd$y))}
您的响应式(Reactive)表达式没有反应式值(如 input$)。因此它不会被创建。要更好地了解 react 性,请阅读 this awesome instruction .
此外,也许您会尝试避免硬编码并尝试在您的函数中添加您想要调用的响应式函数作为参数,如下所示:
myf<-function(func){ return(func()$y) }
然后:
output$test2 <- renderText({ myf(psd) })
关于R Shiny 的自定义功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32462335/