我在重新保存对象时表现出了 saveRDS 的奇怪行为。这是一个可重现的示例:

df <- data.frame(a = c(1,2), b = c(3,4))
saveRDS(df, "test.rds")
readRdsFile <- readRDS("test.rds")
saveRDS(df1, "test.rds") #trying to resave the object however there is an issue with the object df1. Mistaken object name or it has not been compiled somewhere in the code before so it does not exist.
readRdsFile2 <- readRDS("test.rds") #the original file is corrupted.



这有意义吗?它是有意的吗,我可以做些什么来避免文件损坏?

最佳答案

编辑:2 年后,我无法使用 R 3.6 重现此错误,因此我解决此问题的建议是更新 R。任何可以重现该错误的人请将您的 R 版本作为评论发布。

我不知道问题出在哪里,但如果你找不到更好的方法,这里有一个修复方法。在进入 saveRDS 之前,它将为 str 返回错误,因此您不会遇到损坏问题

saveRDS2 <- function(object,file){str(object);saveRDS(object,file)}
df <- data.frame(a = c(1,2), b = c(3,4))
saveRDS2(df, "test.rds")
readRdsFile <- readRDS("test.rds")
saveRDS2(df1, "test.rds") # error as df1 doesn't exists
readRdsFile2 <- readRDS("test.rds") #the original file is not corrupted and can be reloaded

关于r - saveRDS 的问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44456298/

10-12 18:59