如何从R数据帧中仅选择一列并将其作为数据帧而不是向量返回?

通常,如果我们从R数据帧中提取单个列,则将其提取为向量,但我们可能希望以数据帧形式来使用它,以便可以在其上应用数据帧的操作。因此,我们可以使用单个方括号来提取具有T(TRUE)或(FALSE)值和drop = FALSE的值,以便输出成为数据帧。

请看以下数据帧-

示例

set.seed(999)
x1<-rnorm(20,5,1)
x2<-rnorm(20,5,2)
x3<-rnorm(20,10,2)
x4<-rnorm(20,10,1.5)
x5<-rnorm(20,10,4)
df1<-data.frame(x1,x2,x3,x4,x5)
df1

输出结果

       x1      x2        x3     x4      x5
1 4.718260 2.542873 9.028727 8.615033 7.428309
2 3.687440 6.286089 10.016996 11.747431 13.941194
3 5.795184 4.280474 7.435773 11.563103 5.085707
4 5.270070 5.588071 7.776842 11.655743 10.340899
5 4.722694 2.749463 10.601331 9.972138 5.183625
6 4.433976 6.284531 10.552958 8.279563 8.492609
7 3.121342 2.786525 5.898245 7.887731 15.454594
8 3.733209 3.230319 10.028380 9.576507 8.988469
9 4.032250 1.891810 11.164533 9.373345 14.025960
10 3.878991 4.746642 9.930547 11.494995 11.748597
11 6.325464 9.765328 9.766672 9.840571 16.634154
12 5.133977 6.202552 8.710036 9.895897 10.110741
13 5.938749 5.358723 13.488823 11.424552 6.085122
14 5.172538 7.161063 10.732189 9.375201 15.134917
15 5.957650 4.506376 9.866380 11.461001 5.481034
16 3.637314 0.772526 10.565225 10.093437 14.186631
17 5.068335 4.258945 11.135390 10.807633 7.688271
18 5.100658 6.045736 7.441568 6.902765 8.824823
19 5.901345 6.035611 10.870738 10.654647 9.032894
20 2.925643 2.194978 8.868998 9.759660 10.879791

提取列x1-

df1 [,c(T,F,F,F,F)]

[1] 4.718260 3.687440 5.795184 5.270070 4.722694 4.433976 3.121342 3.733209
[9] 4.032250 3.878991 6.325464 5.133977 5.938749 5.172538 5.957650 3.637314
[17] 5.068335 5.100658 5.901345 2.925643

is.vector(df1 [,c(T,F,F,F,F)])[1]是

提取列x1作为数据帧-

df1 [,c(T,F,F,F,F),drop = FALSE]

x1
1 4.718260
2 3.687440
3 5.795184
4 5.270070
5 4.722694
6 4.433976
7 3.121342
8 3.733209
9 4.032250
10 3.878991
11 6.325464
12 5.133977
13 5.938749
14 5.172538
15 5.957650
16 3.637314
17 5.068335
18 5.100658
19 5.901345
20 2.925643

以相同的方式提取不同的列-

df1 [,c(F,T,F,F,F),drop = FALSE]

  x2
1 2.542873
2 6.286089
3 4.280474
4 5.588071
5 2.749463
6 6.284531
7 2.786525
8 3.230319
9 1.891810
10 4.746642
11 9.765328
12 6.202552
13 5.358723
14 7.161063
15 4.506376
16 0.772526
17 4.258945
18 6.045736
19 6.035611
20 2.194978

df1 [,c(F,F,T,F,F),drop = FALSE]

x3
1 9.028727
2 10.016996
3 7.435773
4 7.776842
5 10.601331
6 10.552958
7 5.898245
8 10.028380
9 11.164533
10 9.930547
11 9.766672
12 8.710036
13 13.488823
14 10.732189
15 9.866380
16 10.565225
17 11.135390
18 7.441568
19 10.870738
20 8.868998

df1 [,c(F,F,F,F,T),drop = FALSE]

x5
1 7.428309
2 13.941194
3 5.085707
4 10.340899
5 5.183625
6 8.492609
7 15.454594
8 8.988469
9 14.025960
10 11.748597
11 16.634154
12 10.110741
13 6.085122
14 15.134917
15 5.481034
16 14.186631
17 7.688271
18 8.824823
19 9.032894
20 10.879791
猜你喜欢