Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R,Mutate Replace,如何在数据框中对从selectInput中选择的特定列进行变异?_R_Replace_Shiny_Mutate - Fatal编程技术网

R,Mutate Replace,如何在数据框中对从selectInput中选择的特定列进行变异?

R,Mutate Replace,如何在数据框中对从selectInput中选择的特定列进行变异?,r,replace,shiny,mutate,R,Replace,Shiny,Mutate,我正在创建一个闪亮的窗口,在这里我可以读取CSV文件,然后可以用新值替换选定列(在本例中,该值替换为0)。 我通常使用变异函数来实现这一点 当所选列也是一个输入时,如何正确地使用mutate函数 ui <- fluidPage(fileInput('file1', h2('Dataset Settings'), accept=c('text/csv', 'text/comma-separated-values,text/plain', '

我正在创建一个闪亮的窗口,在这里我可以读取CSV文件,然后可以用新值替换选定列(在本例中,该值替换为0)。
我通常使用变异函数来实现这一点

当所选列也是一个输入时,如何正确地使用mutate函数

ui <- fluidPage(fileInput('file1', h2('Dataset Settings'),
                          accept=c('text/csv', 'text/comma-separated-values,text/plain', '.csv')),
                tags$hr(),
                
                selectInput(inputId = "replaceCol",
                            label = "Select numeric with missing value",
                            choices = c()),
                actionButton(inputId = "confirm", 
                             label = "Replace with 0"),
                tags$hr(),
                dataTableOutput("Original")
)
  



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

  data_set <- reactive({
    inFile <- input$file1
    read.csv(inFile$datapath)
  })
  
  observe({
    req(input$file1)
    temp <- colnames(data_set())
    col <- list()
    col[temp] <- temp
    updateSelectInput(session,
                      inputId = "replaceCol",
                      choices = col,
                      selected = "")
  })
  
  output$Original <- renderDataTable({
    data_set()
  })

  
  observeEvent(input$confirm,{
    data_set() <- mutate(data_set(), replace(input$replaceCol, TRUE, 0))
  })
  
}

shinyApp(ui = ui, server = server)

ui您的代码有几个问题:

  • 如果UI元素依赖于来自
    服务器的某些计算,最好使用
    renderUI
  • 您不能直接为被动函数的输出赋值
  • 如果要在
    dplyr
    中动态生成变量名,则
因此,如果列发生更改,我将使用
reactiveVal
存储数据集并对其进行更新。我并不完全满意使用观察者更新
数据集()
当选择新文件时,我很高兴听到有人有更好的解决方案

library(shiny)
library(dplyr)

ui <- fluidPage(fileInput('file1', h2('Dataset Settings'),
                          accept=c('text/csv', 'text/comma-separated-values,text/plain', '.csv')),
                tags$hr(),
                
                uiOutput(outputId = "UI_replaceCol"),
                actionButton(inputId = "confirm", 
                             label = "Replace with 0"),
                tags$hr(),
                dataTableOutput("Original")
)




server <- function(input, output, session){
  
  # reactive variable to store the data
  data_set <- reactiveVal()
  
  observeEvent(input$file1, {
    inFile <- input$file1
    data <- read.csv(inFile$datapath)
    data_set(data)
  })
  
  output$UI_replaceCol <- renderUI({
    req(data_set())
    col <- colnames(data_set())
    selectInput(inputId = "replaceCol",
                label = "Select numeric with missing value",
                choices = col)
  })
  
  output$Original <- renderDataTable({
    data_set()
  })
  
  
  observeEvent(input$confirm,{
    data <- data_set() %>% 
      mutate(!!as.symbol(input$replaceCol) :=
               replace(!!as.symbol(input$replaceCol), TRUE, 0))
    
    data_set(data)
  })
  
}

shinyApp(ui = ui, server = server)
库(闪亮)
图书馆(dplyr)

ui这段代码出现了什么错误?我知道了,我以前尝试过使用reactiveVal(),但直接读取其中的.csv。谢谢你的帮助。它可以根据需要运行。