R 如何在Shining应用程序上选择数据集?

R 如何在Shining应用程序上选择数据集?,r,ggplot2,shiny,reactive,R,Ggplot2,Shiny,Reactive,这是我的第一个问题,因为我正在努力学习编程 我正在尝试制作一个闪亮的应用程序,根据用户选择的数据集进行绘图 然而,我一直得到以下错误:- ggplot2不知道如何处理类字符的数据 即使我将两个轴都指定为数字 当我自己运行ggplot代码时,它使绘图没有问题,因此我认为问题在于调用数据集 我打电话来询问这个问题的基本数据集,但我需要一个答案,它可以解决我电脑上存储的数据集的问题 library(shiny) ui <- fluidPage( sidebarLayout

这是我的第一个问题,因为我正在努力学习编程

我正在尝试制作一个闪亮的应用程序,根据用户选择的数据集进行绘图

然而,我一直得到以下错误:-

ggplot2不知道如何处理类字符的数据

即使我将两个轴都指定为数字

当我自己运行
ggplot
代码时,它使绘图没有问题,因此我认为问题在于调用数据集

我打电话来询问这个问题的基本数据集,但我需要一个答案,它可以解决我电脑上存储的数据集的问题

library(shiny)
ui <- fluidPage(
            sidebarLayout(
              sidebarPanel(selectInput("data", h4("select data"),
                                       choices=c("mtcars" = "mtcars",
                                                 "pressure" = "pressure"))),
            mainPanel(
               PlotOutput("graph")

              )
            ))
库(闪亮)

ui首先,
输入$data
返回一个字符串。它不会返回与该字符串的值同名的data.frame。如果将data.frame作为字符串传递,则
ggplot()
不起作用:

ggplot(mtcars, aes(mpg, cyl)) + geom_point()     #OK
ggplot("mtcars", aes(mpg, cyl)) + geom_point()   # NOT OK
也许可以尝试使用

base <- reactive ({get(input$data) })
这是因为它们是相同的

ggplot(mtcars, aes(cyl, disp)) + geom_point()
ggplot(mtcars, aes_string("cyl", "disp")) + geom_point()
ggplot(mtcars, aes_string(names(mtcars)[2], names(mtcars)[3])) + geom_point()
# since
names(mtcars)[2]
# [1] "cyl"
names(mtcars)[3]
# [1] "disp"
output$graph <- renderPlot({
  mydata <- base()    
  ggplot(mydata, aes_string(names(mydata)[2], names(mydata)[3])) + 
  geom_col()
})
ggplot(mtcars, aes(cyl, disp)) + geom_point()
ggplot(mtcars, aes_string("cyl", "disp")) + geom_point()
ggplot(mtcars, aes_string(names(mtcars)[2], names(mtcars)[3])) + geom_point()
# since
names(mtcars)[2]
# [1] "cyl"
names(mtcars)[3]
# [1] "disp"