我在 R 中使用十多个名为a1,a2,...,a10
. 我正在寻找一种将它们管理到一个列表中的方法,因为我可以做更多的事情,而不是一个一个地处理数据框。我的十个数据框有 20000 行和 10 列。它们是如此之大。我不知道在 R 中是否可以进行这种转换,但我想将每个数据框的原始名称保留在列表中。例如,如果我有一个 list a
,那么第一个元素的名字必须是a1
,等等。感谢您的帮助。
问问题
241 次
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,第二个和第三个建议是唯一实用的。对于最后一个,名称将按字母顺序排序,即排在前面a10
,a2
所以如果你想按数字对它们进行排序,你可以这样做:
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 回答