使用for循环将数据帧保存为.Rdata文件[重复]
Posted
技术标签:
【中文标题】使用for循环将数据帧保存为.Rdata文件[重复]【英文标题】:Saving dataframes as .Rdata files using a for loop [duplicate] 【发布时间】:2020-01-14 16:45:50 【问题描述】:我正在尝试将一堆数据帧保存为 .RData 文件。现在我是这样处理的:
save(Dataset_1, file = "Hypothesis1/Dataset1.RData")
save(Dataset_2, file = "Hypothesis1/Dataset2.RData")
save(Dataset_3, file = "Hypothesis1/Dataset3.RData")
这可行,但我想使用 for 循环保存这些数据帧。我在想这样的事情:
for (i in 1:11)
save(paste0("Dataset_",i), file = "paste0("Hypothesis1/Dataset",i, ".RData")"
不幸的是,这似乎没有奏效,有人知道为什么会这样吗?
【问题讨论】:
为什么引用"paste0("Hypothesis1/Dataset",i, ".RData")"
?
看来你引用了"paste0(" try : save(paste0("Dataset_",i), file = paste0("Hypothesis1/Dataset",i, ".RData")跨度>
如果我删除引号并尝试 (i in 1:11) save(paste0("Dataset_",i), file = paste0("Hypothesis1/Dataset",i, ".RData ")) 我得到对象 'paste0("Dataset_", i)' not found
【参考方案1】:
您需要将数据集的名称设为 save()
之外的名称,因为它将第一个参数作为字符或符号进行评估,并且不会评估函数。
另外,您需要去掉第二个 paste0
周围的引号,并关闭看起来像错字的 save()
的括号。
for (i in 1:11)
dbname <- paste0("Dataset_",i)
save(dbname, file = paste0("Hypothesis1/Dataset",i, ".RData"))
更好的方法是使用apply
函数,使用ls
列出您的数据集名称,并使用list = ...
参数将它们作为字符传递给save
。
lapply(ls(pattern="Dataset[0-9]+"), function(x) save(list = x, file = paste0("Hypothesis1/",x,".RData")))
【讨论】:
真的你应该使用list=
参数而不是创建一个不必要的变量:save(list = paste0("Dataset_", i), file = paste0("Hypothesis1/Dataset", i, ".RData"))
@MrFlick 正在研究apply
解决方案。这只是为了说明 OP 在他们自己的解决方案中出了什么问题,虽然不是最好的。
谢谢,现在说得通了 :)以上是关于使用for循环将数据帧保存为.Rdata文件[重复]的主要内容,如果未能解决你的问题,请参考以下文章