Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R:在一个条件下将一个列表拆分为两个列表_R_List_Dataframe - Fatal编程技术网

R:在一个条件下将一个列表拆分为两个列表

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

我有一个很大的列表(假设为L),其中包含
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 Try
grp哇,太快了,谢谢:)有没有办法给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)))