Блестящий не обнаруживает вход в выход - PullRequest
1 голос
/ 07 января 2020

Если я запускаю следующий код, все работает нормально:

    library(dplyr)
    library(tidyr)
    library(shiny)

    id <- 1:100
    gender <- sample(c('M','F'), 100, replace=TRUE)
    age <- sample(18:22, 100, replace=TRUE)
    ethnicity <- sample(c('W','B','H','A','O'), 100, replace = TRUE)
    grade <- sample(LETTERS[1:4], 100, replace=TRUE)
    df <- cbind(id,gender,age,ethnicity,grade) %>% as.data.frame()

    list1 <- list("id"="id","gender"="gender","age"="age","ethnicity"="ethnicity","grade"="grade")
    list2 <- list("id"="id","gender"="gender","age"="age","ethnicity"="ethnicity","grade"="grade")

    ui <-fluidPage(

      selectInput("picker1", "PICKER 1", choices = list1, selected = "gender"),
      selectInput("picker2", "PICKER 2", choices = list2, selected = "grade"),
      tableOutput("crosstabs")

    )

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

      output$crosstabs <- renderTable({

        t<-df %>% select_all() %>% select(-id) %>%
          pivot_longer(cols = input$picker1) %>%
          count(name,value, grade) %>% pivot_wider(names_from = grade, values_from = n)
        t
      })

    }

    shinyApp(ui,server)

Но когда я обновляю output$crosstabs, чтобы включить input$picker2, он возвращает ошибку. Я немного сбит с толку, поскольку использую ту же структуру, но просто с grade, замененным на input$picker2:

output$crosstabs <- renderTable({

    t<-df %>% select_all() %>% select(-id) %>%
      pivot_longer(cols = input$picker1) %>%
      count(name,value, input$picker2) %>% pivot_wider(names_from = input$picker2, values_from = n)
    t
  })

Что именно здесь происходит?

1 Ответ

1 голос
/ 07 января 2020

Это строка, и count ожидает имя столбца без кавычек, мы можем преобразовать его в sym bol и оценить (!!)

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

 output$crosstabs <- renderTable({

    df %>%
      select_all() %>% 
      select(-id) %>%
      pivot_longer(cols = input$picker1) %>%
      count(name,value, !!rlang::sym(input$picker2)) %>% 
      pivot_wider(names_from = input$picker2, values_from = n)

      })

   }

-testing

enter image description here

...