创建一个反应性 R 项目,该项目将根据 UI 中文本框中的选择更改使用数据集中的哪个变量

Creating a reactive R item that will change which variable from a dataset is used based on a selection from a text box in the UI

我刚刚开始使用 R shiny,并且已经能够创建一些不错的响应式文本框来更改显示等。

我现在想做类似的事情,但要根据在我的文本框中键入的变量从我的数据集中读取某个变量。

用于从我的输入数据集 pauldata 创建包含变量 AGExvar 对象的标准 R 代码工作正常。然后我可以继续在我的情节中使用这个变量,不用担心。

xvar <- pauldata$AGE

但是,现在我想根据在名为 xv 的文本框对象中输入的内容更改从 pauldata 数据集中读取的变量(在这种情况下,我将输入 AGE 在文本框中)

我试过这个:

xvar2 <- reactive({pauldata$input$xv})

从逻辑上讲,我觉得这行得通,然后我可以在我的情节陈述中使用 xvar2(或者可能是 x2var()),而之前 xvar

]

如果我尝试这样做,那么我会得到与我的情节中 y 和 x 的长度不相等有关的错误,因此我认为 xvar2 没有按照我的预期分配。

我假设可以读取数据集,然后从该数据集中选择变量以响应 UI?

中的条目

来自 selectInput 的值作为字符向量返回,因此您需要使用 [[ 运算符而不是 $。此外,输入值也已经是反应性的,因此无需包装在 reactive()

我认为这就是您想要完成的:

library(shiny)

ui <- fluidPage(

  h1("Everyone's 2nd Favorite Data Set"),
  selectInput("xv", "Select Variable", choices = names(iris[-5])),
  plotOutput("plot")

)

server <- function(input, output, session) {

  output$plot <- renderPlot({
    hist(iris[[input$xv]], xlab = input$xv, main = "")
  })

}

shinyApp(ui, server)