为在for循环中创建的对象分配唯一名称

时间:2018-03-31 22:13:25

标签: r for-loop assign rda

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

假设我有一个名为'location.id'的10个位置的向量

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文件分配不同的名称。

1 个答案:

答案 0 :(得分: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,它允许您恢复到不同的变量名称。