1

我在 R 中使用十多个名为a1,a2,...,a10. 我正在寻找一种将它们管理到一个列表中的方法,因为我可以做更多的事情,而不是一个一个地处理数据框。我的十个数据框有 20000 行和 10 列。它们是如此之大。我不知道在 R 中是否可以进行这种转换,但我想将每个数据框的原始名称保留在列表中。例如,如果我有一个 list a,那么第一个元素的名字必须是a1,等等。感谢您的帮助。

4

4 回答 4

2

也许我不明白你在追求什么,但有什么问题:

a <- list(a1, a2, ... a10)

?

于 2013-10-13T02:04:40.613 回答
1

首先,将所有 data.frames 名称放入字符向量中。你可以做:

df.names <- c("a1", "a2", "a3", ..., "a10")

或者

df.names <- paste0("a", 1:10)

或通过正则表达式找到它们,例如“ ana后跟一个或多个数字”:

df.names <- ls(pattern = "a\\d+")

如果你有很多 data.frames,第二个和第三个建议是唯一实用的。对于最后一个,名称将按字母顺序排序,即排在前面a10a2所以如果你想按数字对它们进行排序,你可以这样做:

df.names <- df.names[order(as.integer(sub("a", "", df.names)))]

一旦你有了一个名称向量,mget就可以将所有这些对象放入一个命名列表中:

my.list <- mget(df.names)
于 2013-10-13T09:10:33.610 回答
1

注意:请使用下面的@flodel 解决方案,不要对此表示赞同。这是低级的答案。

假设您的数据框具有相同的前缀 say myDataframes,那么:

list <- sapply(grep("^myDataframes", ls(), value = TRUE),
               function(n) eval(parse(text = n)), simplify = FALSE, USE.NAMES = TRUE)

我将逐步解释它:

# Uses grep to extract the names of the dataframes that you want to put in a list
grep("^myDataframes", ls(), value = TRUE)

# The sapply function does 2 things:
# 1. Evaluates the character vector of names and puts the relevant dataframe into a list.
# 2. Names the dataframe in the list with the name of the dataframe

希望以上有所帮助。

于 2013-10-13T04:11:24.540 回答
0

毕竟它们并不多,您可以使用命名列表对数据框进行分组。

df.list <- list( a1 = a1, a2 = a2, a3= a3) # etc until 10

于 2013-10-13T11:41:28.303 回答