R 如何在两个不同的数据框中使用相同的名称,让闪亮的应用程序正常工作?

R 如何在两个不同的数据框中使用相同的名称,让闪亮的应用程序正常工作?,r,csv,append,shiny,R,Csv,Append,Shiny,我正在写我的第一个闪亮的应用程序。代码的要点是读取csv文件,用户回答来自应用程序的一些输入,并将这些数据附加到csv文件中。其目的是每天保存此文件,应用程序更新内容。该文件随后将用于分析 我的应用程序在第一次打开时成功执行此操作。但是,当会话关闭然后重新打开以供以后使用时(设想在午餐前关闭应用程序,然后在午餐后重新打开),由于“错误:名称与以前的名称不匹配”,CSV文件将无法再追加 我首先有一个“empty”.csv,只有一个标题行,有三列(a、B、C),称为log.csv 然后我使用下面的代

我正在写我的第一个闪亮的应用程序。代码的要点是读取csv文件,用户回答来自应用程序的一些输入,并将这些数据附加到csv文件中。其目的是每天保存此文件,应用程序更新内容。该文件随后将用于分析

我的应用程序在第一次打开时成功执行此操作。但是,当会话关闭然后重新打开以供以后使用时(设想在午餐前关闭应用程序,然后在午餐后重新打开),由于“错误:名称与以前的名称不匹配”,CSV文件将无法再追加

我首先有一个“empty”.csv,只有一个标题行,有三列(a、B、C),称为log.csv

然后我使用下面的代码来创建这个闪亮的应用程序

library(shiny)

ui <- fluidPage(

  # Application title
  titlePanel("My 1st App"),

  #Enter Agent
  selectInput(inputId = "a", "A", c("Choose one" = "","A1", "A2", "A3"),
         multiple = FALSE, selectize = TRUE, width = NULL, size = NULL),

  #Enter Concentration
  numericInput(inputId = "b", "Favorite Number", NULL, min = 0, max = NA),

  #Enter Detection
  radioButtons(inputId = "c", "Are you Happy Y/N", c("Y", "N")),
  actionButton(inputId = "submit", "Submit", icon = NULL, width = NULL),
  verbatimTextOutput("summary"),

  log <- read.table("V:\\My\\Path\\log.csv",sep=",",header=T)

)


server <- function(input, output) {
    data <- eventReactive(input$submit, {         
        t <- cbind(input$agent,input$conc, input$detect)
        names(t) <- c("A","B","C")
        t         
  })


     output$summary <- renderPrint({data() #outputs data in allotted field.

       write.table(rbind(log,data()), file="V:\\My\\Path\\log.csv", sep=",",
                             col.names= FALSE, row.names=F, append = T)
      }) 

}
shinyApp(ui = ui, server = server)'
库(闪亮)

ui如果应用程序中不需要输出,您可以尝试使用
observeEvent
。(我对代码做了一些修改,使之更简单,但想法是一样的)

库(闪亮)

path对于任何其他可能遵循的人,我将发布最终解决方案。没有D.Alburez的答复,这是不可能做到的。我修改了他的代码,只是为了得到我想要的答案

library(shiny)
path <- "your path"
log <- read.csv(paste0(path,"log.csv"))

ui <- fluidPage(

  # Application title
  titlePanel("My 1st App"),

  #Enter Agent
  selectInput(inputId = "a", "A", c("Choose one" = "","A1", "A2", "A3"),
          multiple = FALSE, selectize = TRUE, width = NULL, size = NULL),

  #Enter Concentration
  numericInput(inputId = "b", "Favorite Number", NULL, min = 0, max = NA),

  #Enter Detection
  radioButtons(inputId = "c", "Are you Happy Y/N", c("Y", "N")),
  actionButton(inputId = "submit", "Submit", icon = NULL, width = NULL)
)

server <- function(input, output) {

  observeEvent(input$submit, {
    data <- data.frame(A= input$a, B = input$b, C= input$c)
    write.table(data, file=paste0(path,"log.csv"), sep=",",
                col.names= FALSE, row.names=F, append = T)
  })
}

shinyApp(ui = ui, server = server)
库(闪亮)

感谢您的快速回复。这几乎奏效了。我会再弄点来看看能不能修好。好消息:当它再次打开时不会崩溃。坏消息:打开额外次数后,在追加时,它会一次又一次地追加以前的所有数据。例如,如果在第一个实例中有3个观察结果,并且应用程序已关闭。在应用程序的下一个实例中,新使用1次应用程序后,现在有7次观察(前3次、前3次重复和新观察)。我会坚持下去,但如果你有解决办法,我就接受。再次感谢。是的!!!!!谢谢你,D!这起作用了。然后为了进一步回答我上面的问题,rbind(log,t)是愚蠢的。使用append写入.csv已经绑定了它。再次感谢!很高兴听到这个!如果答案有帮助,您可以通过单击旁边的复选标记来接受它。
library(shiny)
path <- "your path"
log <- read.csv(paste0(path,"log.csv"))

ui <- fluidPage(

  # Application title
  titlePanel("My 1st App"),

  #Enter Agent
  selectInput(inputId = "a", "A", c("Choose one" = "","A1", "A2", "A3"),
          multiple = FALSE, selectize = TRUE, width = NULL, size = NULL),

  #Enter Concentration
  numericInput(inputId = "b", "Favorite Number", NULL, min = 0, max = NA),

  #Enter Detection
  radioButtons(inputId = "c", "Are you Happy Y/N", c("Y", "N")),
  actionButton(inputId = "submit", "Submit", icon = NULL, width = NULL)
)

server <- function(input, output) {

  observeEvent(input$submit, {
    t <- data.frame(A= input$a, B = input$b, C= input$c)
    data <- rbind(log,t)
    write.csv(data, file=paste0(path,"log.csv"),row.names=F)
  })
}

shinyApp(ui = ui, server = server)
library(shiny)
path <- "your path"
log <- read.csv(paste0(path,"log.csv"))

ui <- fluidPage(

  # Application title
  titlePanel("My 1st App"),

  #Enter Agent
  selectInput(inputId = "a", "A", c("Choose one" = "","A1", "A2", "A3"),
          multiple = FALSE, selectize = TRUE, width = NULL, size = NULL),

  #Enter Concentration
  numericInput(inputId = "b", "Favorite Number", NULL, min = 0, max = NA),

  #Enter Detection
  radioButtons(inputId = "c", "Are you Happy Y/N", c("Y", "N")),
  actionButton(inputId = "submit", "Submit", icon = NULL, width = NULL)
)

server <- function(input, output) {

  observeEvent(input$submit, {
    data <- data.frame(A= input$a, B = input$b, C= input$c)
    write.table(data, file=paste0(path,"log.csv"), sep=",",
                col.names= FALSE, row.names=F, append = T)
  })
}

shinyApp(ui = ui, server = server)