10.[小白学习笔记] R语言 列表

真·科研狗 2017-06-27 10:40:23 阅读: 1348

列表也可以理解为数组,但是比较特殊,列表中每个元素都可以是不同类型,如下面:

微信截图_20170627102140.png

全选中代码,然后点击上图中红框部分“run”,在控制台会出现如下的结果:

微信截图_20170627102214.png

可以看出,列表list()里面可以放置不同类型的元素,上面的代码中放置了字符串、向量、布尔、浮点。当然,list()里面还可以包含list().

当然我们要怎么访问list()里面的每个元素呢?我们首先要给list()里面的所有元素都命名一下,名称为字符类型,如下面代码;

list_data <- list(c("Jan","Feb","Mar"), matrix(c(3,9,5,1,-2,8), nrow = 2),
   list("green",12.3))
names(list_data) <- c("1st Quarter", "A_Matrix", "A Inner list")
print(list_data)

全选中之后运行,会得到如下结果:

$`1st_Quarter`
[1] "Jan" "Feb" "Mar"

$A_Matrix
     [,1] [,2] [,3]
[1,]    3    5   -2
[2,]    9    1    8

$A_Inner_list
$A_Inner_list[[1]]
[1] "green"

$A_Inner_list[[2]]
[1] 12.3

那么我们怎么访问呢?有两种方式,第一种是直接通过数字下标访问,我们之前介绍到很多语言的数字下标是从0开始的,R语言的下标是从1开始的,因此上述list()中要访问第一个元素可以使用如下的语句:

print(list_data[1])

如果重命名之后,可以如下方式访问(依然使用上面的list):

print(list_data$A_Matrix)
#上述代码等同于 print(list_data[2]),因为A_Matrix是list的第二个元素

可以看出重命名list是为了更好地辨别,使用list_data$A_Matrix就能清楚知道当前的是一个Matrix,而使用list_data[2]你不可能从字面上看出来是什么东西。


我们学习了列表的访问,那么接下来看一下列表的更新、增加、删除,看如下代码:

list_data <- list(c("Jan","Feb","Mar"), matrix(c(3,9,5,1,-2,8), nrow = 2),
   list("green",12.3))


names(list_data) <- c("1st Quarter", "A_Matrix", "A Inner list")


list_data[4] <- "New element"
print(list_data[4])


list_data[4] <- NULL


print(list_data[4])


list_data[3] <- "updated element"
print(list_data[3])

上述代码中,首先我们定义了一个3个元素的列表list_data,然后给列表中的每个元素用names()命名,之后我们重新增加一个列表元素list_data[4]; 接下来我们将list_data[4]删除(赋值为NULL),最后我们将第三个元素更新为字符串“update element”(原来第三个元素是list("green",12,3)


列表的合并

有时候我们需要合并两个列表,可以使用如下的方式

list1 <- list(1,2,3)
list2 <- list("Sun","Mon","Tue")

merged.list <- c(list1,list2)

print(merged.list)

将列表转换为向量

列表可以转换为向量,使得向量的元素可以用于进一步的操作。 可以在将列表转换为向量之后应用对向量的所有算术运算。 要做这个转换,我们使用unlist()函数。 它将列表作为输入并生成向量

list1 <- list(1:5)
print(list1)

list2 <-list(10:14)
print(list2)


v1 <- unlist(list1)
v2 <- unlist(list2)

print(v1)
print(v2)


result <- v1+v2
print(result)

运行上述代码,得到如下结果:

[[1]]
[1] 1 2 3 4 5

[[1]]
[1] 10 11 12 13 14

[1] 1 2 3 4 5
[1] 10 11 12 13 14
[1] 11 13 15 17 19


 
邀请讨论

附件

{{f.title}} 大小 {{f.file_size}} 下载 {{f.count_download}} 金币 {{f.count_gold}}
{{item.nick_name}} 受邀请回答 {{item.create_time}}
{{item.refer_comment.nick_name}} {{item.refer_comment.create_time}}

附件

{{f.title}} 大小 {{f.file_size}} 下载 {{f.count_download}} 金币 {{f.count_gold}}
切换到完整回复 发送回复
赞({{item.count_zan}}) 踩({{item.count_cai}}) 删除 回复 关闭
科研狗©2015-2025 科研好助手,京ICP备20005780号-1 建议意见

服务热线

178 0020 3020

微信服务号