创建一个反应性 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
创建包含变量 AGE
的 xvar
对象的标准 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)
我刚刚开始使用 R shiny,并且已经能够创建一些不错的响应式文本框来更改显示等。
我现在想做类似的事情,但要根据在我的文本框中键入的变量从我的数据集中读取某个变量。
用于从我的输入数据集 pauldata
创建包含变量 AGE
的 xvar
对象的标准 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)