提取;“较低”/&引用;终点站;R中列表中的元素
是否有提取列表中较低元素的最佳方法?提取;“较低”/&引用;终点站;R中列表中的元素,r,list,R,List,是否有提取列表中较低元素的最佳方法? 例如,此列表中的人员有一系列“人员”,每个人都有一个数字“R”,作为people[[i]]$experties$R 有没有最好的方法将它们提取为向量? 我希望使用rlist,它对我需要的东西有很多好处,但我看不到它的功能。 下面是一个例子,我需要做什么,但可能不太理想: #https://renkun.me/rlist-tutorial/Features/Filtering.html #install.packages("rlist") library(r
例如,此列表中的人员有一系列“人员”,每个人都有一个数字“R”,作为
people[[i]]$experties$R
有没有最好的方法将它们提取为向量?
我希望使用rlist,它对我需要的东西有很多好处,但我看不到它的功能。
下面是一个例子,我需要做什么,但可能不太理想:
#https://renkun.me/rlist-tutorial/Features/Filtering.html
#install.packages("rlist")
library(rlist)
people <- list.load("http://renkun.me/rlist-tutorial/data/sample.json")
length(people)
str(people)
people[[1]][[1]]$R
str(list.filter(people, Age >= 25))
Rskill<-numeric()
for(i in 1:length(people))
Rskill<-c(Rskill,people[[i]]$Expertise$R)
Rskill
unlist(lapply(1:length(people),function(i) people[[i]]$Expertise$R))
#https://renkun.me/rlist-tutorial/Features/Filtering.html
#install.packages(“rlist”)
图书馆(rlist)
人(25人)
Rskill我认为sapply是提取R值作为向量的最简单方法:
sapply(people,function(l)l$Expertise$R)
我不知道rlist包,但是你可以通过
sapply(people, function(x) x$Expertise$R)
或者,如果您喜欢循环,请使用
Rskill <- numeric(length(people))
for (i in seq_along(people))
Rskill[[i]] <- people[[c(i, 4, 1)]]
Rskillvapply()
是您的lappy()
的更健壮的替代品,确保输出的类型(这里,“integer”
):
rlist
似乎提供了与list.mapv()类似的功能:
请提供一个可复制的示例@Sathish:OP的例子对我来说似乎是重复的,我不熟悉rlist
,但是你可以使用:vapply(人,函数(p)p$experties$R,整数(1))
使你的lappy()
更简单、更健壮:,vapply看起来很有用-lapply的主要区别似乎是您可以指定返回的数据?@apom如果OP使用dput
提供数据和所需的输出会更好,否则人们会倾向于假设很多,并猜测会有很多工作。
vapply(people, function(p) p$Expertise$R, integer(1))
# [1] 2 3 1
list.mapv(people, .$Expertise$R, "integer")
# [1] 2 3 1
# Or even simpler, saving typing two characters ;-)
list.mapv(people, Expertise$R, "integer")
# [1] 2 3 1