【问题标题】:Storing a content in to a desired object将内容存储到所需对象
【发布时间】:2012-08-20 04:31:17
【问题描述】:

我有一个这样的向量:

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 中做到这一点???

【问题讨论】:

    标签: r get load s4


    【解决方案1】:

    您需要知道每个 .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()-ed 编辑到特定环境中,您也许可以将进程与工作区的其余部分隔离/)

    【讨论】:

      猜你喜欢
      • 2020-06-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-04-18
      • 2013-06-23
      相关资源
      最近更新 更多