0

我有一个这样的向量:

vec1 <- c("x1","x2","x3","x4")

我有另一个这样的向量:

vec2 <- c("X1.RData","X2.RData","X3.RData","X4.RData")

我在这里尝试做的是加载 RData 文件,然后使用相同的文件名将它们保存回来,但对象应该是 vec1 的对象。

for (i in 1:length(vec1)){
vec1[i] <- get(load(vec2[i]))
save(vec1[i],file=vec2[i])
}

但它给了我错误,说"incompatible types" 我也尝试像这样更改角色对象的类:

class(vec1[i]) <- myclass

其中 myclass 是 S4 类型对象的类。

有没有办法在 R 中做到这一点???

4

1 回答 1

0

您需要知道每个 .Rdata 文件中对象的名称。对象名称与对象内容一起保存,并且在使用访问时load不会分配存储它们的文件的名称。此外,您需要使用assign才能给这些对象一个新名称。假设您当时在工作区中没有其他内容:

未经测试:

for (i in 1:length(vec1)){ load(vec2[i])
   assign( vec1[i] , get( ls() )
   save(vec1[i],file=vec2[i])
   rm(list=ls(patt="^x.$") )
}

如果您在工作区中有其他东西,那么您确实需要知道这些 .Rdata 文件中对象的名称。(尽管如果您load()将它们编辑到特定环境中,您可能能够将进程与工作区的其余部分隔离/)

于 2012-08-20T04:50:42.410 回答