《R语言编程艺术》书上代码实现---第四章列表

本文详细介绍了R语言中列表的创建、索引、操作、拼接、获取长度以及使用apply系列函数的方法,包括lapply和sapply的运用。通过实例展示了如何对列表进行元素访问、增加或删除、排序以及在文本词汇索引和数据处理中的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

第四章 列表

4.1创建列表

j=list(name="Joe",salary=55000,union=T)
j
jalt=list("Joe",55000,T)
jalt

j$sal #标签名字可以简写

z=vector(mode="list")
z[["abc"]]=3
z

4.2列表的常规操作

#4.2.1列表索引
#三种访问方式
j$salary
j[["salary"]]
j[[2]]

#使用单中括号[]返回的是新列表,[[]]返回的是组件本身
j[1:2]
j2=j[2]
j2
class(j2)#是列表
str(j2)

#j[[1:2]] 会报错
ja2=j[[2]]
ja2
class(ja2)

#4.2.2增加或删除列表元素
#三种赋值方式
z=list(a="abc",b=12)
z
z$c="sailling"
z

z[[4]]=28
z
z[5:7]=c(F,T,T)
z$b=NULL
z

#拼接
c(list("Joe",55000,T),list(5))

#4.2.3获取列表长度
length(j)

#4.2.4扩展案例:文本词汇索引
#没有txt文件

4.3访问列表元素和值

names(j)
ulj=unlist(j)#获取列表的值
ulj#返回的是一个字符串向量
class(ulj) 
y=list(a=1,b=2,c=3)
y
unlist(y)
class(unlist(y))#列表内都是数值返回的数值型向量

w=list(a=5,b="abv")
wu=unlist(w)
class(wu)#列表中有数值和字符串返回的都是字符串
wu
#R语言各种类型元素有优先级
#NULL<raw<逻辑类型<整型<实数类型<复数类型<列表<表达式
names(wu)=NULL
wu
unname(wu)#unname更方便

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

#4.4.1lapply()和sapply()的使用
#lapply list apply
lapply(list(1:3,25:29),median) #对列表应用中位数,返回的是列表
sapply(list(1:3,25:29),median)#如果可以转化为矩阵或向量形式

#4.4.2扩展案例:文本词汇索引
#字母顺序排序
alphawl <- function(wrdlst) {
   nms <- names(wrdlst) # the words
   sn <- sort(nms)  # same words in alpha order
   return(wrdlst[sn])  # return rearranged version
}
#词频排序函数
# orders the output of findwords() by word frequency
freqwl <- function(wrdlst) {
   freqs <- sapply(wrdlst,length)  # get word frequencies
   return(wrdlst[order(freqs)])
}


#4.4.3扩展案例:鲍鱼数据
g=c("M","F","F","I","M","M","F")
lapply(c("M","F","I"),function(gender) which(g==gender))#返回的列表

4.5递归型列表

#列表可以是递归的,列表的组件也是列表
b=list(u=5,v=12)
c=list(w=3)
a=list(b,c)
a
length(a)

#c()函数中的可选参数recursive,是否把原列表压平
c(list(a=1,b=2,c=list(d=5,e=9)))
c(list(a=1,b=2,c=list(d=5,e=9)),recursive=T)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值