如何在R中提取資料框列表中的列?


在資料分析中,我們經常需要提取單個值、單行或單列用於特定分析。例如,如果資料框包含定義為身高和體重的列,那麼我們可能只想使用身高,然後可以提取它,這也可以是列表的一部分,因此需要從列表中提取。如果我們有一個數據框列表,則可以使用雙方括號訪問資料框和列號來提取列表中某個資料框的列,如下例所示。

示例1

考慮以下資料框:

線上演示

> x1<-rnorm(10)
> x2<-rnorm(10)
> df1<-data.frame(x1,x2)
> df1

輸出

     x1       x2
1  0.2378371  0.51433808
2  0.0638975 -1.66077353
3  0.3987209  0.68480587
4 -1.1321073  0.29528261
5 -0.5603269  1.14556819
6  2.2072545 -1.20718355
7  0.8196423  0.38380242
8 -2.2394064  0.06741712
9 -0.7356725 -1.46968026
10 -1.4642820 -1.39423679

示例

線上演示

> y1<-rnorm(10)
> y2<-rnorm(10)
> df2<-data.frame(y1,y2)
> df2

輸出

      y1      y2
1  2.2307515  0.375538934
2 -1.3539616 -0.169574915
3 -0.1332480 -0.788416414
4  1.3181498  1.887995737
5 -1.4384012  1.261034365
6  0.3725585 -0.493219141
7 -0.7806511 -1.177616450
8 -0.4772392  0.250962895
9 -0.8932982 -0.004567268
10 0.2224190 -0.203232106

示例

> List1<-list(df1,df2)
> List1

輸出

[[1]]
      x1       x2
1  0.2378371  0.51433808
2  0.0638975 -1.66077353
3  0.3987209  0.68480587
4 -1.1321073  0.29528261
5 -0.5603269  1.14556819
6  2.2072545 -1.20718355
7  0.8196423  0.38380242
8 -2.2394064  0.06741712
9 -0.7356725 -1.46968026
10 -1.4642820 -1.39423679

[[2]]
        y1       y2
1  2.2307515  0.375538934
2 -1.3539616 -0.169574915
3 -0.1332480 -0.788416414
4  1.3181498  1.887995737
5 -1.4384012  1.261034365
6  0.3725585 -0.493219141
7 -0.7806511 -1.177616450
8 -0.4772392  0.250962895
9 -0.8932982 -0.004567268
10 0.2224190 -0.203232106

從List1中的資料框2提取第2列:

示例

線上演示

> List1[[2]][[2]]

輸出

[1]  0.375538934 -0.169574915 -0.788416414 1.887995737 1.261034365
[6] -0.493219141 -1.177616450 0.250962895 -0.004567268 -0.203232106

List2

示例

線上演示

> a1<-rnorm(10)
> a2<-rnorm(10)
> df3<-data.frame(a1,a2)
> df3

輸出

      a1      a2
1  1.5711728  0.2861241
2  0.8062374  0.9469154
3  1.1505496 -0.5894829
4  0.9164866 -0.3137043
5 -1.3424446 -1.2921698
6 -0.1499540 -0.8940665
7 -0.1498557 -1.1361156
8  0.9299988  0.7679135
9 -1.7079005 -0.7099908
10 0.8146867 1.3921303

示例

線上演示

> b1<-rnorm(10)
> b2<-rnorm(10)
> df4<-data.frame(b1,b2)
> df4

輸出

     b1       b2
1 -1.7113866 1.7014637
2 -0.0202485 1.2428109
3 -0.3892979 -1.5831333
4  0.2127277 -0.4943695
5 -0.4846616 1.0283278
6 -1.4116239 -1.4882983
7 -0.1737286 -0.1101114
8  1.4613389 0.1531942
9 -0.1573986 0.3431330
10 -0.2782074 0.5439397

示例

> List2<-list(df3,df4)
> List2

輸出

[[1]]
     a1      a2
1 1.5711728 0.2861241
2 0.8062374 0.9469154
3 1.1505496 -0.5894829
4 0.9164866 -0.3137043
5 -1.3424446 -1.2921698
6 -0.1499540 -0.8940665
7 -0.1498557 -1.1361156
8 0.9299988 0.7679135
9 -1.7079005 -0.7099908
10 0.8146867 1.3921303

[[2]]
b1 b2
1 -1.7113866 1.7014637
2 -0.0202485 1.2428109
3 -0.3892979 -1.5831333
4 0.2127277 -0.4943695
5 -0.4846616 1.0283278
6 -1.4116239 -1.4882983
7 -0.1737286 -0.1101114
8 1.4613389 0.1531942
9 -0.1573986 0.3431330
10 -0.2782074 0.5439397

從List2中的資料框1提取第2列:

示例

> List2[[1]][[2]]

輸出

[1] 0.2861241 0.9469154 -0.5894829 -0.3137043 -1.2921698 -0.8940665
[7] -1.1361156 0.7679135 -0.7099908 1.3921303

更新於:2021年1月2日

686 次瀏覽

開啟您的職業生涯

完成課程獲得認證

開始學習
廣告
© . All rights reserved.