相关疑难解决方法(0)

如何在对象名称作为变量传递的循环中使用saveRDS-R

我正在尝试在循环中使用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

3
推荐指数
1
解决办法
1521
查看次数

标签 统计

r ×1