列表
基本命令
函数 | 功能 |
---|---|
getwed() | 查看当前文档所在地 |
library() | 显示已安装的包的列表 |
library("*") | 加载这个包 |
search() | 显示已加载的包的列表 |
install.packages() | 下载包 |
detach(“packages:*”) | 移除包 |
remove.packages("*") | 卸载包 |
letters | 输出26个英文字母 |
length() | 计算长度 |
sample() | 随机抽取 |
which() | 返回下标 |
matrix() | 创建矩阵 |
plot() | 创建图片 |
apply(m,dim.index,f) | m是对象,dim.index=1为行,2为列,f是函数 |
sapply(m,f) | m是对象,f是运行的函数,默认返回结果向量,加入simplify=F返回列表 |
lapply(m,f) | m是对象,f是运行的函数,返回结果是列表 |
cbind(m,f) | 将f按列添加到m中 |
rbind(m,f) | 将f按行添加到m中 |
unlist() | 将列表转化为向量,并且内部数值类型为字符型 |
代码展示
创建列表
#列表
stu.lst <- list(name="xiaoming",id=1001,is.past.exam=T)
stu.lst
stu.lst2 <- list("xiaoming",1001,T)#不设置标签的话就默认为1,2,3,
stu.lst2
new.1 <-vector(mode="list");new.1
new.1[["name"]] <- "xiaoming";new.1
列表索引
stu.lst
stu.lst$name
stu.lst[["name"]]
stu.lst["name"]
name <-stu.lst["name"];name
str(name)
name2 <- stu.lst[["name"]]
name2
str(name2)
stu.lst[[1]]
stu.lst[1]
stu.lst[1:2]
stu.lst[c(1,3)]
列表添加元素
stu.lst
stu.lst$age<- 19
stu.lst
length(stu.lst)
stu.lst[[5]] <- 98
stu.lst
stu.lst[6:8] <-1:3
stu.lst
列表删除元素
stu.lst
stu.lst[[8]] <- NULL
stu.lst
stu.lst[6:7] <- NULL
stu.lst
stu.lst$age <-NULL
stu.lst
将多个列表拼接为一个列表
stu.lst
stu.lst2
c(stu.lst,stu.lst2)#拼接
访问列表元素的标签
stu.lst
names(stu.lst)
去掉向量的元素名
un.stu
names(un.stu) <- NULL
un.stu
unlist函数
stu.lst
unlist(stu.lst)
un.stu <- unlist(stu.lst)
un.stu
str(un.stu)
typeof(un.stu)
lapply函数 与 sapply函数的区别
#对列表中的每个元素进行操作
data <- list(1:10,101:110)
data
lapply(data,max)
sapply(data,max)
sapply(data,max,simplify=FALSE)
sapply作用于向量或列表
lapply 比较相似,不过lapply的输出是一个列表而不是向量
如果想用sapply()函数输出的是列表,在参数中添加 simplify=FALSE 即可使函数结果为list格式
递归列表:列表的元素是列表
lst1 <- list(1:3)
lst2 <- list(11:15)
lst <- list(lst1,lst2)
lst
length(lst)
c(lst,recursive = T)
stu.lst <- c(list(score=100,stu=list(name="xiaoming",id=1001)),recursive = T)
str(stu.lst)
typeof(stu.lst)