我在项目中使用Rstudio和Shiny。
我定义了一个变量res
,它包含多行和多列的数据框,然后我创建一个图,其x y和color是来自res
数据帧的数据。
我的问题是,当我运行它,如果我写,我希望x轴输入变量值(input$SelInp
),我不会得到数据帧值,而是,我只得到列名。
如果我更改代码以直接从dataframe(res$some_column_name
)获取值,我会得到正确的值。
ui.R
selectInput("SelInp",
label = "Choose one:",
choices = colnames(res)
)
server.R
output$plt = renderPlot({
qplot(data = res,
x = input$SelInp, #this only returns a column name
y = res$loan_amnt, # this returns correct values from column loan_amt
ylab = "some y axis",
xlab = "some x axis",
main="Our Chart")
}
)
所以,我希望提前感谢input$SelInp
中的值
答案 0 :(得分:3)
我认为原因是selectInput将列名作为字符返回。 qplot期待一个变量。我没有检查qplot是否有一个选项来使用字符来指定比例,但是ggplot中的aes_string会这样做:
ui.R
library(shiny)
library(ggplot2)
shinyUI(fluidPage(
titlePanel("Old Faithful Geyser Data"),
sidebarLayout(sidebarPanel(
selectInput(
"selectedCol",
"Select colum for X axis",
choices = colnames(mtcars),
selected = colnames(mtcars)[1]
)
),
mainPanel(plotOutput("distPlot")))
))
server.R
library(shiny)
library(ggplot2)
shinyServer(function(input, output) {
output$distPlot <- renderPlot({
x_axis <- input$selectedCol
gg <-
ggplot(mtcars, aes_string(x = x_axis, y = "hp", color = "cyl"))
gg <- gg + geom_point()
gg
})
})
如果有帮助,请告诉我。