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中定义它,该函数就可以正常工作。但我想要的是在全局范围内定义我的所有功能。我想它必须与输入有关,因为这些都是被动的?!谁能帮我?

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

答案

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

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

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

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

以上是关于R-Shiny使用ui.R的输入定义功能的主要内容,如果未能解决你的问题,请参考以下文章

R-Shiny:在文件输入上选择输入反应

R-Shiny 应用程序中的重音符号

Sublime Text自定义snippet

vs code 自定义代码片段

R-Shiny:如何显示使用 saveHTML() 函数创建的动画和控件?

将 ggplot 与 r-shiny 一起使用时出错