R,Mutate Replace,如何在数据框中对从selectInput中选择的特定列进行变异?
我正在创建一个闪亮的窗口,在这里我可以读取CSV文件,然后可以用新值替换选定列(在本例中,该值替换为0)。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', '
我通常使用变异函数来实现这一点 当所选列也是一个输入时,如何正确地使用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。谢谢你的帮助。它可以根据需要运行。