如何按位置访问R工作空间中的对象?

时间:2014-12-12 19:53:35

标签: r

我确信答案很简单。假设我的工作区中有许多数据框,来自读取大量文件的函数。

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]不起作用。指出明显的任何帮助都会有所帮助!

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()返回的订单在每次被调用时都没有任何意义或者必然是相同的。