当前位置:   article > 正文

R语言(4):列表

R语言(4):列表

4.1 创建列表

向量所有元素类型统一,结构单一。普通向量是原子型的

指定标签:

j <- list(name = "joe",salary = 55000, union = T)

不指定标签:这时有默认标签

j <- list("joe",55000,T)

4.2 列表的操作

4.2.1 列表的索引

单个值的索引 共三种方法:

  1. j <- list(name = "joe",salary = 55000, union = T)
  2. j$sal #可以缩写
  3. j[["salaryl"]]#这时不能缩写
  4. j[[2]]

多个值一起拿出来:

当有$ 属性时,说明是列表

  1. j[1:2] #可以访问前两个元素,本质上是两个子列表
  2. j[2] #是访问子列表,不是单个元素,虽然结果一样

4.2.2 增加或删除列表元素

列表创建后增加元素:

一、添加元素

添加一个:

  1. z <- list(a = 'abc',b =12)
  2. z$c <- "sailing"
  3. z[[4]]<- "abh"

添加多个:

z[5:7] <- c(F,F,T)

二、删除元素:

删除一个:

直接赋值为NuLL

z$b <- NULL

注意删除z$b后,他之后元素的索引全部-1

4.2.3 多个列表拼接(c())

m <- c(list('joe',55000,T),list(5))

c()中有一个可选参数,recursive,默认为FALSE,当令其为TRUE时将会将源列表的组件压平 。

  1. m <- c(list(a=1,b=2,c=list(d=5,e=7)),recursive = T)
  2. m

 结果:

4.2.4 获取列表长度

  1. m <- c(list('joe',55000,T),list(5))
  2. n <- length(m)

4.3 访问列表元素和值

4.3.1 获得列表的标签

  1. m <- list(name = '123',int = 12,m ='ww')
  2. names(m)

4.3.2 获得值

unlist()返回的是一个向量,都是数字是是数值型,若果都有的话就是按照优先级,比如:数字和字符串最后都是字符串类型

  1. m <- list(name = 123,int = 12,m =11)
  2. unlist(m) #返回的是一个向量,都是数字是是数值型,若果都有的话就是按照优先级,比如:数字和字符串最后都是字符串类型
  3. z <- unlist(m)

这里的Z是一个数值型向量!,但是还是有元素名

  1. z <- unlist(m) #保留了元素名字,但是不能调用
  2. names(z)
  3. q <- unname(z) #去掉了元素名
  4. q

4.3.4  各种类型的优先级

NULL<RAW<逻辑类型<整型<实数类型<复数类型<列表<表达式(把配对列表(parist当作普通列表))

4.4 在列表上使用apply系列函数

用于批量调用函数

4.4.1 lapply()和sapply()的使用

lapply():对列表按中的组件执行给定的函数,并返回一个列表。

lapply(list(1:3,15:19),median)

sapply():返回的向量

sapply(list(1:3,15:19),median)

4.4.3 扩展案例:文本词汇索引

第一步、输出各个单词出现的索引
  1. findwords <- function(tf){
  2. txt <- scan(tf,"")
  3. wd <- list()
  4. for (i in 1:length(txt)){
  5. wrd <- txt[i]
  6. wd[[wrd]] <- c(wd[[wrd]],i)
  7. }
  8. return (wd)
  9. }
  1. setwd("D:/Rfiles/project1")
  2. source("findwords.R",encoding="utf-8")
  3. findwords("1.txt")

 结果:(部分)

第二步:将单词按照首字母进行排序

4.4.2 拓展案例:鲍鱼数据

4.5 递归型列表

列表是可以递归的(recursive),即列表的组件也可以是列表

  1. b <- list(u=5, v= 12)
  2. c <- list(w = 13)
  3. a <- list(b,c)
  4. a

输出结果:

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小蓝xlanll/article/detail/66097
推荐阅读
相关标签
  

闽ICP备14008679号