我正在嘗試制作一個使用此功能的 Shiny 應用程式(用 R markdown 制作):
ls_vs <- function(variable) {
dataset %>%
filter({{variable}} != 254.948530) %>%
filter({{variable}} != 121.738080) %>%
ggplot(mapping = aes(y = life_satisfaction, x = {{variable}}))
geom_point(aes(color = region, shape = freedom_status), size = 2)
geom_smooth(color = "cyan")
labs(y = "Life Satisfaction", shape = "Freedom Status", color = "Continent")
}
ls_vs(economic_freedom)
我用這個函式得到了想要的結果:

現在這是我將它集成到一個閃亮的應用程式中的嘗試:
用戶界面部分:
tabPanel("Factor Comparision",
sidebarPanel(
varSelectInput(inputId = "variable", label = "Select Factor to Compare", data = dataset),
mainPanel(
h1("Test"),
plotOutput("ls_vs"),
)
)),
這是服務器部分:
#Factor Comparisons
output$ls_vs <- renderPlot({
dataset%>%
filter({{input$variable}} != 254.948530) %>%
filter({{input$variable}} != 121.738080) %>%
ggplot(mapping = aes(y = life_satisfaction, x = {{input$variable}}))
geom_point(aes(color = region, shape = freedom_status), size = 2)
geom_smooth(color = "cyan")
labs(y = "Life Satisfaction", shape = "Freedom Status", color = "Continent")
})
在嘗試運行該應用程式時,我收到錯誤訊息:

錯誤:arg必須是符號
我是否在 UI 區域或服務器區域中做錯了什么?如何varSelectInput在 Shiny 中正確使用來制作互動式 ggplot,您可以在其中更改變數以更改繪圖?
非常感謝你!
uj5u.com熱心網友回復:
markdown 中的代碼與 Shiny 中的代碼之間的主要區別在于 Shiny 傳遞變數的字串值 ( "economic_freedom") 而 markdown 中的函式已被撰寫為使用裸列名稱 ( economic_freedom)。
更改函式以使用可以使用.data而不是完成的字串{{}}。
library(dplyr)
library(ggplot2)
output$ls_vs <- renderPlot({
dataset%>%
filter(.data[[input$variable]] != 254.948530) %>%
filter(.data[[input$variable]] != 121.738080) %>%
ggplot(mapping = aes(y = life_satisfaction, x = .data[[input$variable]]))
geom_point(aes(color = region, shape = freedom_status), size = 2)
geom_smooth(color = "cyan")
labs(y = "Life Satisfaction", shape = "Freedom Status", color = "Continent")
})
uj5u.com熱心網友回復:
使用“bang bang”運算子dplyr::sym()也應該可以作業。
#Factor Comparisons
output$ls_vs <- renderPlot({
dataset%>%
filter(!!sym(input$variable) != 254.948530) %>%
filter(!!sym(input$variable) != 121.738080) %>%
ggplot(mapping = aes(y = life_satisfaction, x = !!sym(input$variable)))
geom_point(aes(color = region, shape = freedom_status), size = 2)
geom_smooth(color = "cyan")
labs(y = "Life Satisfaction", shape = "Freedom Status", color = "Continent")
})
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/381229.html
