首页 > 解决方案 > 如何使变异与数字列名的反应性一起工作?

问题描述

在处理数字列的名称时,我真的不知道将 mutate 与反应性联系起来。

我有看起来像这样的数据:

df <- tibble(a=c("a", "b", "c"), `1990`=c(1,2,3), `2010`=c(3,2,1))

当我这样做时,一切看起来都很好:

p <- df %>%
  mutate(newvar = `1990`)

但我想在我的 Shiny App 中使用它,newvar以便从选择列表中分配给输入。

我为此创建了这个反应式;

  selectedyear <- reactive({
    input$select
  })

但现在它似乎不起作用:

p <- df %>%
  mutate(newvar = selectedyear())

我尝试了不同的修改,例如:

p <- df %>%
  mutate(newvar = `selectedyear()`)

但似乎没有什么对我有用。

应用程序的完整代码:

library(shiny)
library(tibble)
library(dplyr)

df <- tibble(a=c("a", "b", "c"), `1990`=c(1,2,3), `2010`=c(3,2,1))

ui <- fluidPage(
  selectInput("select", "Select:", c(1990, 2010)),
  tableOutput("val")
)
server <- function(input, output) {
  selectedyear <- reactive({
    input$select
  })
  output$val <- renderTable({
    p <- df %>%
      mutate(temperature = selectedyear())
    p
  })
}
shinyApp(ui, server)

同样的事情,但使用字符作为输入很容易。你知道这方面的一些技巧吗?

标签: rshinydplyrtibble

解决方案


你可以做

  output$val <- renderTable({
    p <- df %>%
      mutate(temperature = !!selectedyear())
    p
  })

推荐阅读