我正在尝试在循环中使用saveRDS,我有一个名为XDATA的列表,其中包含21个矩阵,还有一个名为name的列表,其中包含21个要在其中保存这些矩阵的名称。这是我尝试过的两个解决方案,但均无效:
for (i in 1:21) {
assign(names[i],XDATA[[i]])
saveRDS(as.name(names[i]),file = paste(names[i],'.RDS',sep=''),compress=TRUE)
}
Run Code Online (Sandbox Code Playgroud)
这只会保存一个1kb的文件,其中包含符号as.name(names [i])。我的第二次尝试是:
for (i in 1:21) {
assign(names[i],XDATA[[i]])
eval(parse(paste('saveRDS(',names[i],",file=paste(names[i],'.RDS',sep=''),compress=TRUE)", sep="")))
}
Run Code Online (Sandbox Code Playgroud)
这将导致以下错误:
file(filename,“ r”)中的错误:无法打开连接另外:警告消息:在file(filename,“ r”)中:无法打开文件'saveRDS(Sub_502,file = paste(names [1],')”。 RDS',sep =''),compress = TRUE)':没有这样的文件或目录
我希望能为该问题提供一个可行的解决方案,也许是一个解释,尽管语法似乎很合理,但为什么在第一个解决方案中使用as.name传递却失败了。
谢谢!
r ×1