首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >R闪亮:带有变异的反应性列名?

R闪亮:带有变异的反应性列名?
EN

Stack Overflow用户
提问于 2019-09-12 11:51:00
回答 1查看 1.8K关注 0票数 1

在我的中,有一个列有一个反应性名称(由用户选择),我希望生成一个值为原始列的对数的列。为此,我在mutate包中使用dplyr。但是,当我试图使这个新列的名称是反应性的时,会出现一个错误。

例如,在下面的代码中,我将新列命名为“对数”,它工作得很好:

代码语言:javascript
复制
library(shiny)
library(DT)
library(data.table)
library(dplyr)

ui <- fluidPage(
  titlePanel(""),
  fluidRow(
    checkboxInput(inputId = "logarithm",
                  label = "Log(variable)"),
    dataTableOutput("my_df"),
    textInput("new_name", 
              label = "New_name"),
    actionButton("new_name2", "Validate")
  )
)


server <- function(input, output) {

  data <- head(mtcars[, 1:3])


  reactive_data <- eventReactive(input$new_name2, {
    colnames(data) <- c("mpg", "cyl", input$new_name)
    data
  }) 

  output$my_df <- renderDataTable({
    data <- reactive_data()
      if(input$logarithm){
        data %>%
          mutate(logarithm = log(data[, input$new_name]))

      }
    else {
      data
    }
  })
}

shinyApp(ui = ui, server = server)

但是将“对数”改为“对数(input$new_name)”,它将不再起作用。

有谁有解决办法吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-09-12 12:13:11

基于这个question and answer

代码语言:javascript
复制
if(input$logarithm){
        log_name <- paste0('logarithm(', input$new_name, ')')
        data %>%
          mutate(!!log_name := log(data[, input$new_name]))

}

完整代码:

代码语言:javascript
复制
library(shiny)
library(DT)
library(data.table)
library(dplyr)

ui <- fluidPage(
  titlePanel(""),
  fluidRow(
    checkboxInput(inputId = "logarithm",
                  label = "Log(variable)"),
    dataTableOutput("my_df"),
    textInput("new_name", 
              label = "New_name"),
    actionButton("new_name2", "Validate")
  )
)


server <- function(input, output) {

  data <- head(mtcars[, 1:3])


  reactive_data <- eventReactive(input$new_name2, {
    colnames(data) <- c("mpg", "cyl", input$new_name)
    data
  }) 

  output$my_df <- renderDataTable({
    data <- reactive_data()
    if(input$logarithm){
            log_name <- paste0('logarithm(', input$new_name, ')')
            data %>%
              mutate(!!log_name := log(data[, input$new_name]))

    }
    else {
      data
    }
  })
}

shinyApp(ui = ui, server = server)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57906128

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档