0

我使用以下函数对数据集执行加权 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 中定义它,该函数就可以正常工作。但我想要的是在全局范围内定义我的所有功能。我想这与输入有关,因为这些是反应性的?!谁能帮我?

为什么这在技术上不起作用?

4

1 回答 1

0

有必要将所有反应式表达式定义为代码的服务器部分的一部分。全局范围只能包含静态元素,如库调用、一旦执行的数据操作即使输入更改也保持原样。每次小部件输入更改时,全局范围都不会重新执行,只有服务器代码发生更改。

由于您的数据过滤取决于输入条件,因此必须进入服务器内部才能工作。

要了解闪亮的反应性如何工作,我发现以下文章非常有帮助

作为代码的一部分,每次运行该函数时,都会查找 input$groupa 的值 [如果它是否为假],此值查找是全局无法执行的,只能由服务器执行。

于 2018-09-11T17:33:30.113 回答