R 表示循环数据帧变量名称



我是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 名称保存。多谢。

试试这个:

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您可以创建一个具有所需名称的新变量。

谢谢大家。我能够解决这个问题。事实证明,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"))))
}

最新更新