我有一个带有20
数据帧的大型列表(假设为L)。 20
数据框只有两种不同的形式。他们有13
或5
行。
$foo1
a value
1 12 321.12
2 11 231.12
3 10 211.15
4 9 ...
5 8 ...
6 7 ...
7 6
8 5
9 4
10 3
11 2
12 1
13 0
$foo2
a value
1 4 19.52
2 3 98.91
3 2 97.67
4 1 ...
5 0 ...
我想将列表拆分为两个列表,条件如下:
具有相同行长度的所有数据帧应存储在一个列表中。因此,我想要一个包含5
行的所有数据框的列表,另一个应该包含13
行的所有数据框。
答案 0 :(得分:0)
我们可以通过split
行数来做到这一点。通过循环list
创建分组变量以获取行数(' grp')
grp <- sapply(L, nrow)
然后split
list
&#39; L&#39;由grp
L1 <- split(L, grp)
如果我们需要list
名称为&#39; month&#39;,&#39; quarter&#39;
L1 <- split(L, setNames(c("month", "quarter"), c("13", "5"))[as.character(grp)])
set.seed(24)
L <- list(foo1 = data.frame(a = 1:13, value = rnorm(13)),
foo2 = data.frame(a = 1:5, value = rnorm(5)),
foo3 = data.frame(a = 1:13, value = rnorm(13)),
foo4 = data.frame(a = 1:5, value = rnorm(5)))
&GT;