问题描述
在R中,我想创建一个高位图表,该图表根据来自选择输入字段的用户输入显示各种组合。但是,我一直在失败。
我有两个输入字段,其中两个输入字段都有两次机会。用户可以选择任一组合,并且所选变量应用于Highcharter中的散点图。我尝试了很多机会,但是没有用。
xvar <- input$varx
yvar <- input$vary
hc <- chart_df %>%
hchart('scatter',hcaes(x = xvar,y = yvar,names = xvar),dataLabels = list(enabled = TRUE,format = '{point.names}')
)
但是,它无法识别分配的xvar和yvar。数据框chart_df包含相应的列。 我该如何解决?任何帮助将不胜感激!
解决方法
问题在于xvar
和yvar
是字符串。为了使您的代码正常工作,您必须使用例如将它们转换为符号!!sym()
或使用hcaes_string
,就像ggplot2::aes_string
一样,您可以将变量作为字符传递。
使用mtcars
作为示例数据集,请尝试以下操作:
library(shiny)
library(highcharter)
library(rlang)
ui <- fluidPage(
sidebarLayout(
sidebarPanel(
selectInput("varx","varx",choices = names(mtcars),selected = "hp"),selectInput("vary","vary",selected = "mpg")
),# Show a plot of the generated distribution
mainPanel(
highchartOutput("highchart"),highchartOutput("highchart2")
)
)
)
server <- function(input,output) {
output$highchart <- renderHighchart({
xvar <- input$varx
yvar <- input$vary
hc <- mtcars %>%
hchart('scatter',hcaes(
x = !!sym(xvar),y = !!sym(yvar),names = !!sym(xvar)),dataLabels = list(enabled = TRUE,format = '{point.names}')
)
})
output$highchart2 <- renderHighchart({
xvar <- input$varx
yvar <- input$vary
hc <- mtcars %>%
hchart('scatter',hcaes_string(
x = xvar,y = yvar,names = xvar),format = '{point.names}')
)
})
}
shinyApp(ui = ui,server = server)