R-Shiny使用ui.R的输入定义功能
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了R-Shiny使用ui.R的输入定义功能相关的知识,希望对你有一定的参考价值。
我使用以下函数对数据集执行加权t检验。
pvfct <- function(var, weights) {
req(input$groupb)
req(input$sex)
req(input$age)
req(input$education)
if(is.null(input$groupa) == FALSE & is.null(input$groupb) == FALSE & is.null(input$sex) == FALSE & is.null(input$age) == FALSE & is.null(input$education) == FALSE) {
data <- df()
data1 <- data %>%
select(var, group1, weightrake) %>%
filter(group1 == 1)
data2 <- data %>%
select(var, group1, weightrake) %>%
filter(group1 == 2)
result <- wtd.t.test(data1[[var]], data2[[var]], data1[[weights]], data2[[weights]], samedata = FALSE)
result <- as.numeric(result$coefficients[3])
result <- round(result, 2)
result
}
else {}
}
result <- pvfct("Image_Vertrauen_ALLBRANDS_top2", "weightrake")
只要我在Server.R中定义它,该函数就可以正常工作。但我想要的是在全局范围内定义我的所有功能。我想它必须与输入有关,因为这些都是被动的?!谁能帮我?
为什么这在技术上不起作用?
答案
有必要将所有反应式表达式定义为代码的服务器部分的一部分。全局范围只能包含库调用等静态元素,即使输入发生更改,一旦执行的数据操作也会保持不变。每次窗口小部件输入更改时,全局范围都不会重新执行,而只是更改的服务器代码。
由于您的数据过滤取决于输入条件,因此必须进入服务器内部才能工作。
要了解闪亮的反应性如何,我发现以下文章非常有用
- https://shiny.rstudio.com/articles/reactivity-overview.html
- https://shiny.rstudio.com/articles/understanding-reactivity.html
作为代码的一部分,每次运行函数时,都会查找输入$ groupa的值[如果它是否为false],则此值查找是全局无法执行的操作,只能由服务器执行。
以上是关于R-Shiny使用ui.R的输入定义功能的主要内容,如果未能解决你的问题,请参考以下文章