我需要将 R 环境中的项目保存到磁盘。我不明白为什么下面的代码不起作用:
op <- function(){
for(i in 1:length(ls())){
file <- paste0(ls()[i],".Rds")
saveRDS(file,file)
}
}
Run Code Online (Sandbox Code Playgroud)
这里实际上有一些错误:
.GlobalEnv不仅仅是op环境。但是,对 的调用ls将列出op环境中的对象(仅i在您调用时ls)。如果你想列出 中的对象.GlobalEnv,请调用ls(.GlobalEnv)saveRDS,您是在告诉它将存储在文件中的路径中保存存储的字符串file。所以你本质上只是保存路径。相反,您需要从中获取对象.GlobalEnv所以正确的方法之一是:
op <- function(){
obj_names <- ls(.GlobalEnv)
for(i in 1:length(obj_names){
file <- paste0(obj_names[i],".Rds")
saveRDS(get(obj_names[i], envir = .GlobalEnv), file)
}
}
Run Code Online (Sandbox Code Playgroud)
或者更惯用一点,
op <- function()
sapply(ls(.GlobalEnv), function(x) saveRDS(get(x, envir = .GlobalEnv), paste0(x, ".Rds"))
Run Code Online (Sandbox Code Playgroud)
save如果您不介意将所有对象保存在一个文件中,该函数也可能很有用。更多内容请参见?save
| 归档时间: |
|
| 查看次数: |
1558 次 |
| 最近记录: |