我是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"))))
}