如何在R中使用列表元素创建数据框?

如果列表具有与我们要为其创建数据帧的每个向量的长度相同的元素(而不是子元素)的长度,则我们首先需要创建向量的数据帧,然后可以轻松地将该列表添加到数据框。但是,如果我们有一个列表和其他向量,则无法创建数据帧,因为data.frame函数将分别读取列表的每个值。

示例

> df1<-data.frame(x=rpois(20,5),y=rpois(20,1))
> df1

输出结果

   x y
1  6 1
2  8 1
3  6 2
4  8 1
5  5 1
6  3 1
7  6 1
8  7 1
9  7 1
10 7 2
11 5 0
12 5 2
13 2 2
14 4 0
15 2 1
16 3 1
17 4 0
18 6 4
19 6 2
20 4 1

示例

> df1$z<-list(1:3,4:5,6:10,12:15,16:17,18:20,21:22,23:25,26:27,28:30,31:35,36:38,39:42,43:45,46:48,49:55,56:60,61:62,63:65,66:70)
> df1

输出结果

  x y z
1 6 1            1, 2, 3
2 8 1            4, 5
3 6 2      6, 7, 8, 9, 10
4 8 1      12, 13, 14, 15
5 5 1          16, 17
6 3 1          18, 19, 20
7 6 1          21, 22
8 7 1          23, 24, 25
9 7 1          26, 27
10 7 2         28, 29, 30
11 5 0     31, 32, 33, 34, 35
12 5 2         36, 37, 38
13 2 2         39, 40, 41, 42
14 4 0         43, 44, 45
15 2 1         46, 47, 48
16 3 1 49, 50, 51, 52, 53, 54, 55
17 4 0     56, 57, 58, 59, 60
18 6 4         61, 62
19 6 2     63, 64, 65
20 4 1     66, 67, 68, 69, 70

让我们看另一个例子:

示例

> df2<-data.frame(F1=sample(LETTERS[1:4],20,replace=TRUE),F2=sample(LETTERS[21:26],20,replace=TRUE))
> df2

输出结果

F1 F2
1 C W
2 B Z
3 A V
4 D W
5 D V
6 A X
7 C X
8 D Y
9 C Y
10 B V
11 D X
12 B W
13 D V
14 A U
15 A X
16 C X
17 C Z
18 B X
19 C Z
20 A V

示例

> df2$F3<-list(rep(c("A","B")))
> df2

输出结果

  F1 F2 F3
1 C W A, B
2 B Z A, B
3 A V A, B
4 D W A, B
5 D V A, B
6 A X A, B
7 C X A, B
8 D Y A, B
9 C Y A, B
10 B V A, B
11 D X A, B
12 B W A, B
13 D V A, B
14 A U A, B
15 A X A, B
16 C X A, B
17 C Z A, B
18 B X A, B
19 C Z A, B
20 A V A, B