我确信答案很简单。假设我的工作区中有许多数据框,来自读取大量文件的函数。
for(i in 1:10) {
df <- data.frame(matrix(1, nrow=10, ncol=20))
assign(paste0("df", i), df)
rm(list=c("df", "i"))
}
如何通过工作区中的位置而不是名称来访问数据框(或对象)?
例如,假设我想在工作区中复制第一个对象。我可以通过ls()[1]
识别对象。但是,我怎么能将其扩展到实际访问数据框。当然,temp <- ls()[1]
不起作用。指出明显的任何帮助都会有所帮助!
答案 0 :(得分:0)
你真的不应该使用assign()
。像这样创建一堆变量几乎总是一个坏主意,因为它们难以使用。您可能应该在列表中合并数据。例如
df <- lapply(1:10, function(i) {
data.frame(matrix(1, nrow=10, ncol=20))
}
然后您可以使用
访问数据框df[[1]]
df[[2]]
等。但是,如果您真的想通过ls()
结果中的索引提取元素,则可以将变量名称更改为get()
的值,即get(ls()[1])
。但我强烈建议不要这样做,因为ls()
返回的订单在每次被调用时都没有任何意义或者必然是相同的。