Создание реактивного элемента R, который изменит, какая переменная из набора данных используется на основе выбора из текстового поля в пользовательском интерфейсе - PullRequest
0 голосов
/ 14 февраля 2020

Я только начинаю с R блестящий, и мне удалось создать несколько хороших реактивных текстовых полей для изменения отображения и т. Д. c.

Я сейчас собираюсь сделать то же самое, но читать в определенная переменная формирует мой набор данных в зависимости от того, какая переменная введена в мое текстовое поле.

Стандартный код R для создания xvar объекта, содержащего переменную AGE из моего входного набора данных pauldata, работает нормально. Затем я могу go использовать эту переменную в моем графике, не беспокоясь.

xvar <- pauldata$AGE

Однако теперь я хотел изменить, какая переменная считывается из моего набора данных pauldata на основе того, что введено в мой объект текстового поля с именем xv (в этом случае я бы набрал AGE в текстовом поле)

Я попробовал это:

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

Логически я чувствовал, что это будет работать и затем я смогу позже использовать xvar2 (или, возможно, x2var()) в своем операторе заговора, где xvar был ранее.

Если я попробую это, то получу ошибки, связанные с длиной y и x, а не будучи равным на моем графике, следовательно, я не думаю, что xvar2 было назначено так, как я предполагаю.

Я предполагаю, что можно читать в наборах данных и затем сделать выбор переменных из этого набора данных реактивным к записям в вашем пользовательском интерфейсе?

1 Ответ

0 голосов
/ 14 февраля 2020

Значения из selectInput возвращаются как символьный вектор, поэтому вам нужно использовать оператор [[ вместо $. Кроме того, входные значения также уже реагируют, поэтому нет необходимости переносить их в reactive()

Я думаю, это то, что вы пытались выполнить sh:

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)
...