【发布时间】:2017-06-05 04:32:28
【问题描述】:
我正在尝试创建一个简单的应用程序,该应用程序通过因子水平绘制连续变量的平均值。 用户选择几个因素之一进行分组,并选择连续变量进行平均。该应用程序应该使用 ggplot 显示绘图。很容易让这个功能在闪亮之外工作,但我正在努力让它在应用程序中工作。 我知道问题在于我对 NSE 和 SE 缺乏了解,但是在查看了几个小时的文档并测试了各种版本之后,这是我能想到的最好的方法。这似乎是一个常见问题,但我没有看到与堆栈溢出问题相关的答案。
我以泰坦尼克号数据集为例 我得到以下信息:
mean.default(input$ContVar) 中的警告:参数不是数字或 逻辑:返回 NA 除了误差之外,绘制绘图时均值不会发生变化。
library(shiny)
library(dplyr)
library(ggplot2)
Titan <- as.data.frame(Titanic)
Titan <- mutate(Titan, Freq2 = Freq +3)
shinyApp( ui = basicPage( selectInput("FactVar", "Factor", choices = names(Titan)[1:4]), selectInput("ContVar", "Cont Variable", choices = names(Titan)[5:6]), plotOutput("surv")), server = function(input, output) {
output$surv <- renderPlot({
Titan %>%
group_by_(~input$FactVar) %>%
summarize_(MeanFreq = ~ mean(input$ContVar))%>%
ggplot(aes_(x=~ MeanFreq, y = input$FactVar))+geom_point()
})
})
【问题讨论】:
-
也许this 会有所帮助。
-
从上面的链接我想出了这个。
eval(substitute(Titan %>% group_by_(~input$FactVar) %>% summarize_(MeanFreq = ~ mean(col)), list(col = as.symbol(input$ContVar)))) %>% ggplot(aes_(x=~ MeanFreq, y = input$FactVar))+geom_point() -
感谢 SBista 对问题的关注。当我运行代码时,上面的解决方案并没有解决问题。我会阅读上面的链接以获取线索。
-
看起来使用 dplyr 0.6.0 版会更容易。看到这个答案:[链接](stackoverflow.com/questions/44398831/…)