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