Shun 发表于 2021-12-27 17:17:58

R语言入门 Chapter03 | 列表

不登高山,不知天之高也;不临深溪,不知地之厚也。 ——荀子
这篇文章讲述的是R语言中关于列表的相关知识。希望这篇R语言文章对您有所帮助!如果您有想学习的知识或建议,可以给作者留言~
Chapter03 | 列表

1、列表顾名思义就是用来存储很多内容的一个集合,在其他编程语言中,列表一般和数组是等同的,但是在R语言中,列表确实R中最复杂的一种数据结构,也是非常重要的一种数据结构。
2、列表就是一些对象的有序集合。队列中可以存储若干向量、矩阵、数据框、甚至其他列表的组合。
向量和列表:
1、在模式上和向量类似,都说是一维数据组合。
2、向量只能存储一种数据类型,列表中的对象可以是R中的任何数据结构,甚至列表本身。
自带列表:

[*] state.center // 美国每个州的经纬度


[*] 1、列表的创建
# 分别创建以下四个
> a <- 1:20
> b <- matrix(1:24,4,6)
> c=mtcars
> d <- "This is a test list"

# 创建一个列表来存取以上内容
> mlist <- list(a,b,c,d)
> mlist
[]
123456789 10 11 12 13 14 15 16 17 18 19 20

[]
   [,1] [,2] [,3] [,4] [,5] [,6]
    1    5    9   13   17   21
    2    6   10   14   18   22
    3    7   11   15   19   23
    4    8   12   16   20   24

[]
                     mpg cyldisphp drat    wtqsec vs am gear carb
Mazda RX4         21.0   6 160.0 110 3.90 2.620 16.4601    4    4
Mazda RX4 Wag       21.0   6 160.0 110 3.90 2.875 17.0201    4    4
Datsun 710          22.8   4 108.093 3.85 2.320 18.6111    4    1
Hornet 4 Drive      21.4   6 258.0 110 3.08 3.215 19.4410    3    1
Hornet Sportabout   18.7   8 360.0 175 3.15 3.440 17.0200    3    2
Valiant             18.1   6 225.0 105 2.76 3.460 20.2210    3    1
Duster 360          14.3   8 360.0 245 3.21 3.570 15.8400    3    4
Merc 240D         24.4   4 146.762 3.69 3.190 20.0010    4    2
Merc 230            22.8   4 140.895 3.92 3.150 22.9010    4    2
Merc 280            19.2   6 167.6 123 3.92 3.440 18.3010    4    4
Merc 280C         17.8   6 167.6 123 3.92 3.440 18.9010    4    4
Merc 450SE          16.4   8 275.8 180 3.07 4.070 17.4000    3    3
Merc 450SL          17.3   8 275.8 180 3.07 3.730 17.6000    3    3
Merc 450SLC         15.2   8 275.8 180 3.07 3.780 18.0000    3    3
Cadillac Fleetwood10.4   8 472.0 205 2.93 5.250 17.9800    3    4
Lincoln Continental 10.4   8 460.0 215 3.00 5.424 17.8200    3    4
Chrysler Imperial   14.7   8 440.0 230 3.23 5.345 17.4200    3    4
Fiat 128            32.4   478.766 4.08 2.200 19.4711    4    1
Honda Civic         30.4   475.752 4.93 1.615 18.5211    4    2
Toyota Corolla      33.9   471.165 4.22 1.835 19.9011    4    1
Toyota Corona       21.5   4 120.197 3.70 2.465 20.0110    3    1
Dodge Challenger    15.5   8 318.0 150 2.76 3.520 16.8700    3    2
AMC Javelin         15.2   8 304.0 150 3.15 3.435 17.3000    3    2
Camaro Z28          13.3   8 350.0 245 3.73 3.840 15.4100    3    4
Pontiac Firebird    19.2   8 400.0 175 3.08 3.845 17.0500    3    2
Fiat X1-9         27.3   479.066 4.08 1.935 18.9011    4    1
Porsche 914-2       26.0   4 120.391 4.43 2.140 16.7001    5    2
Lotus Europa      30.4   495.1 113 3.77 1.513 16.9011    5    2
Ford Pantera L      15.8   8 351.0 264 4.22 3.170 14.5001    5    4
Ferrari Dino      19.7   6 145.0 175 3.62 2.770 15.5001    5    6
Maserati Bora       15.0   8 301.0 335 3.54 3.570 14.6001    5    8
Volvo 142E          21.4   4 121.0 109 4.11 2.780 18.6011    4    2

[]
"This is a test list"


# 为每个对象添加一个名称
> mlist <- list(first=a,second=b,third=c,fourth=d)
> mlist
$first
123456789 10 11 12 13 14 15 16 17 18 19 20

$second
   [,1] [,2] [,3] [,4] [,5] [,6]
    1    5    9   13   17   21
    2    6   10   14   18   22
    3    7   11   15   19   23
    4    8   12   16   20   24

$third
                     mpg cyldisphp drat    wtqsec vs am gear carb
Mazda RX4         21.0   6 160.0 110 3.90 2.620 16.4601    4    4
Mazda RX4 Wag       21.0   6 160.0 110 3.90 2.875 17.0201    4    4
Datsun 710          22.8   4 108.093 3.85 2.320 18.6111    4    1
Hornet 4 Drive      21.4   6 258.0 110 3.08 3.215 19.4410    3    1
Hornet Sportabout   18.7   8 360.0 175 3.15 3.440 17.0200    3    2
Valiant             18.1   6 225.0 105 2.76 3.460 20.2210    3    1
Duster 360          14.3   8 360.0 245 3.21 3.570 15.8400    3    4
Merc 240D         24.4   4 146.762 3.69 3.190 20.0010    4    2
Merc 230            22.8   4 140.895 3.92 3.150 22.9010    4    2
Merc 280            19.2   6 167.6 123 3.92 3.440 18.3010    4    4
Merc 280C         17.8   6 167.6 123 3.92 3.440 18.9010    4    4
Merc 450SE          16.4   8 275.8 180 3.07 4.070 17.4000    3    3
Merc 450SL          17.3   8 275.8 180 3.07 3.730 17.6000    3    3
Merc 450SLC         15.2   8 275.8 180 3.07 3.780 18.0000    3    3
Cadillac Fleetwood10.4   8 472.0 205 2.93 5.250 17.9800    3    4
Lincoln Continental 10.4   8 460.0 215 3.00 5.424 17.8200    3    4
Chrysler Imperial   14.7   8 440.0 230 3.23 5.345 17.4200    3    4
Fiat 128            32.4   478.766 4.08 2.200 19.4711    4    1
Honda Civic         30.4   475.752 4.93 1.615 18.5211    4    2
Toyota Corolla      33.9   471.165 4.22 1.835 19.9011    4    1
Toyota Corona       21.5   4 120.197 3.70 2.465 20.0110    3    1
Dodge Challenger    15.5   8 318.0 150 2.76 3.520 16.8700    3    2
AMC Javelin         15.2   8 304.0 150 3.15 3.435 17.3000    3    2
Camaro Z28          13.3   8 350.0 245 3.73 3.840 15.4100    3    4
Pontiac Firebird    19.2   8 400.0 175 3.08 3.845 17.0500    3    2
Fiat X1-9         27.3   479.066 4.08 1.935 18.9011    4    1
Porsche 914-2       26.0   4 120.391 4.43 2.140 16.7001    5    2
Lotus Europa      30.4   495.1 113 3.77 1.513 16.9011    5    2
Ford Pantera L      15.8   8 351.0 264 4.22 3.170 14.5001    5    4
Ferrari Dino      19.7   6 145.0 175 3.62 2.770 15.5001    5    6
Maserati Bora       15.0   8 301.0 335 3.54 3.570 14.6001    5    8
Volvo 142E          21.4   4 121.0 109 4.11 2.780 18.6011    4    2

$fourth
"This is a test list"


[*] 2、列表的访问
# 索引进行访问
> mlist
$first
123456789 10 11 12 13 14 15 16 17 18 19 20

# 访问多个元素 ,需要使用向量
> mlist
$first
123456789 10 11 12 13 14 15 16 17 18 19 20

$fourth
"This is a test list"


# 使用名字来访问列表
> state.center
$x
-86.7509 -127.2500 -111.6250-92.2992 -119.7730 -105.5130-72.3573-74.9841-81.6850
-83.3736 -126.2500 -113.9300-89.3776-86.0808-93.3714-98.1156-84.7674-92.2724
-68.9801-76.6459-71.5800-84.6870-94.6043-89.8065-92.5137 -109.3200-99.5898
-116.8510-71.3924-74.2336 -105.9420-75.1449-78.4686 -100.0990-82.5963-97.1239
-120.0680-77.4500-71.1244-80.5056-99.7238-86.4560-98.7857 -111.3300-72.5450
-78.2005 -119.7460-80.6665-89.9941 -107.2560

$y
32.5901 49.2500 34.2192 34.7336 36.5341 38.6777 41.5928 38.6777 27.8744 32.3329 31.7500
43.5648 40.0495 40.0495 41.9358 38.4204 37.3915 30.6181 45.6226 39.2778 42.3645 43.1361
46.3943 32.6758 38.3347 46.8230 41.3356 39.1063 43.3934 39.9637 34.4764 43.1361 35.4195
47.2517 40.2210 35.5053 43.9078 40.9069 41.5928 33.6190 44.3365 35.6767 31.3897 39.1063
44.2508 37.5630 47.4231 38.4204 44.5937 43.0504


# 访问列表的元素
> mlist$first
123456789 10 11 12 13 14 15 16 17 18 19 20


# 高效方法
> state.center$x
-86.7509 -127.2500 -111.6250-92.2992 -119.7730 -105.5130-72.3573-74.9841-81.6850
-83.3736 -126.2500 -113.9300-89.3776-86.0808-93.3714-98.1156-84.7674-92.2724
-68.9801-76.6459-71.5800-84.6870-94.6043-89.8065-92.5137 -109.3200-99.5898
-116.8510-71.3924-74.2336 -105.9420-75.1449-78.4686 -100.0990-82.5963-97.1239
-120.0680-77.4500-71.1244-80.5056-99.7238-86.4560-98.7857 -111.3300-72.5450
-78.2005 -119.7460-80.6665-89.9941 -107.2560


# 输出列表的第一个数,一个中括号输出的是列表的子集,本质还是一个列表输入两个中括号输出的是元素本身的类型
> mlist[]
123456789 10 11 12 13 14 15 16 17 18 19 20
> mlist
$first
123456789 10 11 12 13 14 15 16 17 18 19 20


[*] 单双中括号的区别

# 通过class函数查看类型
> class(mlist)
"list"
> class(mlist[])
"matrix"

# 给列表进行赋值
mlist[] <- iris #使用两个中括号正确

# 清空列表的值
mlist <- NULL   #
mlist[] <- NULL # 清空列表元素的值




https://blog.51cto.com/u_14683590/3737459
页: [1]
查看完整版本: R语言入门 Chapter03 | 列表