R for循环数据框变量名称

问题描述 投票:1回答:2

我是R和循环的新手。我有一个数据帧(xyz). 我正在运行一个循环,想用不同的名称保存一个新的数据框架。

states <- c("AL",   "AK")
keywords <- c("snow", "rain")
filepath <- file.path("C:/data/")

for(state_var in states) 
for(key_var in keywords) 
{
save(xyz, file = (file.path(filepath, paste0(state_var, sep = "_", key_var,".RData"))))
}

一切都很完美,新的数据帧被保存在不同的名称下。但是当我加载保存的数据帧时,所有的数据帧都有完全相同的名字。xyz.

它是如何可能保存在不同的df名称。谢谢你了。

r loops naming
2个回答
2
投票

试试这个。

states <- c("AL",   "AK")
keywords <- c("snow", "rain")

for(state_var in states) 
  for(key_var in keywords) 
  {
    objname <- paste(state_var, key_var, sep="_")
    assign(objname, xyz)
    save(list = objname, file = (file.path(filepath, paste0(state_var, sep = "_", key_var,".RData"))))
    rm(objname) # make sure you get rid of this again
  }

保存保存的对象 照样. 这包括名字。随着 assign 你用你想要的名字创建一个新的变量。


1
投票

谢谢大家。我能够解决这个问题。原来 assign 不能在函数内部工作。而我们必须使用 list.这就是解决方案。

states <- c("AL",   "AK")
keywords <- c("snow", "rain")
filepath <- file.path("C:/data/")

for(state_var in states) 
for(key_var in keywords) 
{
assign(paste(state_var, key_var, sep="_"), xyz)
save(list = paste(state_var, key_var, sep="_"), file = (file.path(filepath, paste0(state_var, sep = "_", key_var,".RData"))))
}
© www.soinside.com 2019 - 2024. All rights reserved.