R:在一个条件下将一个列表拆分为两个列表
我有一个很大的列表(假设为L),其中包含R:在一个条件下将一个列表拆分为两个列表,r,list,dataframe,R,List,Dataframe,我有一个很大的列表(假设为L),其中包含20dataframes。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.9
20
dataframes。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行的所有数据帧。我们可以通过split
调整行数来实现这一点。通过循环通过列表来创建分组变量,以获取行数('grp')
$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 ...
如果我们需要列表
名称为“月”、“季”
L1 <- split(L, setNames(c("month", "quarter"), c("13", "5"))[as.character(grp)])
L1 Trygrp哇,太快了,谢谢:)有没有办法给split函数中的两个列表指定名称?您想要什么名称?假设有foo1、foo3等,它们是13行,foo2、foo4是5行,然后是月份(对于行长为13的列表)和季度(对于行长为5的列表)。实际上,我的列表有以下名称$5
$foo1$5
$foo2,…,$13
$foo6。。。。。我想将列表存储到两个不同的变量中。为此,我首先想指定两个名字,两个列表支持这篇文章
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)))