【问题标题】:Assigning unique names to objects created in for-loop为 for 循环中创建的对象分配唯一名称
【发布时间】:2018-09-10 14:06:37
【问题描述】:

我正在编写一个循环,其中每次迭代的输出都必须保存为 .rda 文件

假设我有一个包含 10 个位置的向量,称为“location.id”

dat <- data.frame(location.id = rep(c(00,11,22,33,44,55,66,77,88,99), each = 10), x = runif(10*10))

location.id <- c(00,11,22,33,44,55,66,77,88,99)

我的循环是:

for(m in unique(location.id)){

   DT.grid <- dat[dat$location.id == m,]
   save(DT.grid, file = paste0("temp_",m,".rda"))
}

但是当我加载 .rda 文件时

 load(file = "temp_00.rda")
 load(file = "temp_11.rda")
 load(file = "temp_22.rda")
 load(file = "temp_33.rda")

所有文件都加载为DT.grid。我理解为什么会发生这种情况,但我不知道如何为循环中的每个 .rda 文件分配不同的名称。

【问题讨论】:

    标签: r for-loop assign rda


    【解决方案1】:

    rda 格式锁定变量名,因此您需要在保存之前将它们设置为不同的名称,因为您将它们全部保存为 DT.grid。有点像...

    for(m in unique(location.id)){
       varname <- paste0("DT.grid_", m)
       assign(varname, dat[dat$location.id == m,])
       save(varname, file = paste0("temp_",m,".rda"))
    }
    

    另一种方法可能是使用saveRDS,它允许您恢复到不同的变量名。

    【讨论】:

    • saveRDS 在我看来会更干净,您只需在问题中将save 更改为saveRDS
    猜你喜欢
    • 2013-01-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-08
    • 1970-01-01
    • 2012-04-25
    • 2021-02-20
    • 1970-01-01
    相关资源
    最近更新 更多