Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
提取;“较低”/&引用;终点站;R中列表中的元素_R_List - Fatal编程技术网

提取;“较低”/&引用;终点站;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)]]
Rskill
vapply()
是您的
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