我试图生成一个简单的表,并将用户输入的值保存到Rda文件中。我收到错误了..。任何帮助都将不胜感激。
警告: Error in:$ operator对原子向量无效
library(shiny)
library(rhandsontable)
library(lubridate)
test_db <- data.frame(d = 20:52,
date = seq(ymd("2020/05/15"), by = "7 days", length.out = 33),
i = vector("numeric", length = 33),
p = vector("numeric", length = 33),
t = vector("numeric", length = 33),
dm = vector("numeric", length = 33)
)
save(test_db, file = "test_db.Rda")
ui <- fluidPage(
mainPanel(
rHandsontableOutput('table'),
actionButton("save", "Save Changes")
)
)
server <- function(input, output){
data1 = load("test_db.Rda")
output$table = renderRHandsontable(data1)
saveData <- function(){
finalDF <- hot_to_r( input$table )
save(finalDF, file = "test_db.Rda")
}
observeEvent(input$save, saveData())
}
shinyApp(ui = ui, server = server)发布于 2020-05-18 19:17:24
问题是您误用了load()或混淆了RData和RDS。load()以无形的方式将存储在该文件中的所有对象加载到工作区中。load()的返回值如?load()所描述
所创建的对象的名称的字符向量,不可见。
因此,不指定对象本身,而只分配它们的名称!您几乎总是会更好地使用RDS文件。
这段代码能满足你的需求吗?
library(shiny)
library(rhandsontable)
library(lubridate)
test_db <- data.frame(d = 20:52,
date = seq(ymd("2020/05/15"), by = "7 days", length.out = 33),
i = vector("numeric", length = 33),
p = vector("numeric", length = 33),
t = vector("numeric", length = 33),
dm = vector("numeric", length = 33)
)
saveRDS(test_db, file = "test_db.RDS")
ui <- fluidPage(
mainPanel(
actionButton("save", "Save Changes"),
rHandsontableOutput('table')
)
)
server <- function(input, output){
data1 <- readRDS("test_db.RDS")
# render must contain a rhandsontable, not just the data
my_handsomtable <- rhandsontable(data1)
output$table <- renderRHandsontable(my_handsomtable)
saveData <- function(){
finalDF <- hot_to_r(input$table)
saveRDS(finalDF, file = "test_db.RDS")
}
observeEvent(input$save, saveData())
}
shinyApp(ui = ui, server = server)https://stackoverflow.com/questions/61807351
复制相似问题