【发布时间】:2022-01-14 13:27:42
【问题描述】:
我正在尝试创建一个高效的代码来打开包含列表的数据文件,提取列表中的一个元素,将其存储在数据框中,然后在打开下一个之前删除该对象。
我的想法是使用循环来做到这一点。不幸的是,我在学习如何使用循环来做到这一点方面还很陌生,并且不知道如何编写代码。
我已设法使用以下代码打开数据集:
for(i in 1995:2015){
objects = paste("C:/Users/...",i,"agg.rda", sep=" ")
load(objects)
}
问题是每个数据集都非常大,R 无法一次打开所有数据集。因此,我现在尝试在每个列表中提取一个名为:tab_<<i value >>_agg[["A"]](例如tab_1995_agg[["A"]])的元素,然后删除该对象并遍历每个 i(它们是不同的年份)。
我尝试过使用以下代码,但它不起作用
for(i in unique(1995:2015)){
objects = paste("C:/Users/...",i,"agg.rda", sep=" ")
load(objects)
tmp = cat("tab",i,"_agg[[\"A\"]]" , sep = "")
y <- rbind(y, tmp)
rm(list=objects)
}
对于任何愚蠢的错误(或问题),我深表歉意,并非常感谢任何帮助。
【问题讨论】:
-
使用
file.remove(objects)而不是rm(list = objects) -
行
tmp = cat("tab",i,"_agg[[\"A\"]]" , sep = "")将NULL分配给对象tmp。实际上,cat用于在控制台中输出对象。那是错字吗? t您想改用paste()吗?如果你改变它会发生什么? -
您好!我使用 cat 是因为 paste 不允许在其中已经有引号的情况下粘贴字符串(据我所知,它不理解带引号的字符串)