如何将这个列表列表放在for循环中的数据框中?也就是说,如何绕过错误:
Error in (function (..., row.names = NULL, check.rows = FALSE, check.names =
TRUE, : arguments imply differing number of rows: 50, 30, 20
代码:
ListA=list(firstA=1:50, secondA=1:50,thirdA=1:50)
ListB=list(firstB=1:30, secondB=1:30, thirdB=1:30)
ListC=list(firstC=1:20, secondC=1:20, thirdC=1:20)
NestedList=list(ListA,ListB,ListC)
DataToWrite=list()
for (i in 1:length(NestedList)){
DataToWrite=c(DataToWrite,NestedList[i])
}
#at the next step i get the error
df=as.data.frame(DataToWrite)
我想要的是将for循环中的每个列表添加到前一个列表末尾的相同列中的数据帧中。我想要的在图片中看起来像: example of structure that I would like to obtain
我不关心列名,我想保留第一个列表的名称。请注意列表"列"每个列表的名称会有所不同,并且在合并到data.frame时也可能会出现问题。
答案 0 :(得分:1)
喜欢这个吗?
do.call(rbind, lapply(NestedList, function(x)as.data.frame(x, col.names=c("First", "Second", "Third"))))
给出,
First Second Third
1 1 1 1
2 2 2 2
3 3 3 3
4 4 4 4
5 5 5 5
6 6 6 6
7 7 7 7
8 8 8 8
9 9 9 9
10 10 10 10
11 11 11 11
12 12 12 12
13 13 13 13
14 14 14 14
15 15 15 15
16 16 16 16
17 17 17 17
18 18 18 18
19 19 19 19
20 20 20 20
21 21 21 21
22 22 22 22
23 23 23 23
24 24 24 24
25 25 25 25
26 26 26 26
27 27 27 27
28 28 28 28
29 29 29 29
30 30 30 30
31 31 31 31
32 32 32 32
33 33 33 33
34 34 34 34
35 35 35 35
36 36 36 36
37 37 37 37
38 38 38 38
39 39 39 39
40 40 40 40
41 41 41 41
42 42 42 42
43 43 43 43
44 44 44 44
45 45 45 45
46 46 46 46
47 47 47 47
48 48 48 48
49 49 49 49
50 50 50 50
51 1 1 1
52 2 2 2
53 3 3 3
54 4 4 4
55 5 5 5
56 6 6 6
57 7 7 7
58 8 8 8
59 9 9 9
60 10 10 10
61 11 11 11
62 12 12 12
63 13 13 13
64 14 14 14
65 15 15 15
66 16 16 16
67 17 17 17
68 18 18 18
69 19 19 19
70 20 20 20
71 21 21 21
72 22 22 22
73 23 23 23
74 24 24 24
75 25 25 25
76 26 26 26
77 27 27 27
78 28 28 28
79 29 29 29
80 30 30 30
81 1 1 1
82 2 2 2
83 3 3 3
84 4 4 4
85 5 5 5
86 6 6 6
87 7 7 7
88 8 8 8
89 9 9 9
90 10 10 10
91 11 11 11
92 12 12 12
93 13 13 13
94 14 14 14
95 15 15 15
96 16 16 16
97 17 17 17
98 18 18 18
99 19 19 19
100 20 20 20
因此,lapply
遍历列表,将每个元素(即每个嵌套列表)转换为数据框,并为列提供相同的名称。 do.call
然后使用rbind
将这些数据框绑定在一起。