【R每日一贴】列表那些事(二)?
测试开头
测试结尾
关于R列表,继续谈论它的事情。
事情三:删除列表元素。将NULL赋值给需要删除的元素,就实现从列表中删除元素。举例说明如下。
> daxue <- list("清华大学", "广东科技学院", "中山大学", "华南理工大学", "深圳大学")
> daxue
[[1]]
[1] "清华大学"
[[2]]
[1] "广东科技学院"
[[3]]
[1] "中山大学"
[[4]]
[1] "华南理工大学"
[[5]]
[1] "深圳大学"
> daxue[[1]] <- NULL
> daxue
[[1]]
[1] "广东科技学院"
[[2]]
[1] "中山大学"
[[3]]
[1] "华南理工大学"
[[4]]
[1] "深圳大学"
> daxue[c(1, 2)] <- NULL
> daxue
[[1]]
[1] "华南理工大学"
[[2]]
[1] "深圳大学"
事情四:列表换为向量。列表转为向量,即把列表中所有元素“展平”赋值给一个向量,使用unlist()函数。举例说明如下。
> lst1 <- list(1, 2, 3)
> class(lst1)
[1] "list"
> mean(lst1)
[1] NA
Warning message:
In mean.default(lst1) : 参数不是数值也不是逻辑值:回覆NA
> vc1 <- unlist(lst1)
> class(vc1)
[1] "numeric"
> mean(vc1)
[1] 2
说明:一些函数,参数需要向量,因而若是列表数据类型,需要进行列表换为向量的预处理。
事情五:移除列表中的NULL元素。举例说明如下。
> lst2 <- list(0, 1, NULL, 360, NULL)
> lst2
[[1]]
[1] 0
[[2]]
[1] 1
[[3]]
NULL
[[4]]
[1] 360
[[5]]
NULL
> logic1 <- sapply(lst2, is.null)
> logic1
[1] FALSE FALSE TRUE FALSE TRUE
> lst2[logic1] <- NULL
> lst2
[[1]]
[1] 0
[[2]]
[1] 1
[[3]]
[1] 360
提示:也可以使用条件来移除列表中的元素。举例说明如下。
> lst3 <- list(-1, 0, 1, 2)
> lst3
[[1]]
[1] -1
[[2]]
[1] 0
[[3]]
[1] 1
[[4]]
[1] 2
> lst3[lst3 < 0] <- NULL
> lst3
[[1]]
[1] 0
[[2]]
[1] 1
[[3]]
[1] 2
【想一想】
1 为什么要进行列表向量化,如何转换?
2 R中NULL表示什么意思?和NA、NaN有什么区别?
【做一做】
1 自建一个列表,删除列表中一个或者某几个元素?
【温馨话语】
子曰:"温故而知新,可以为师矣."
我是陆勤,微信号:wangluqing360,你们在R路上的朋友,一起欣赏R路上的风景。PPV课R语言群:342699237,欢迎朋友们加入,共建最好的R社区。
赠人玫瑰,手有余香。若是觉得此文有用,欢迎分享给更多的人,让更多的人受用。
你若安好,便是晴天。若是朋友们有什么想法或建议,欢迎给我留言或者私信于我。
请关注“恒诺新知”微信公众号,感谢“R语言“,”数据那些事儿“,”老俊俊的生信笔记“,”冷🈚️思“,“珞珈R”,“生信星球”的支持!