如何使用R中的名称向量访问列表的匹配?

时间:2016-03-18 16:02:17

标签: r list

我有一个列表,如X,其中包含某些条目X $(y1,...),条目的名称保存在名为Y的char矢量中。现在我想使用mapply来访问内容X $ Y。我写了以下mapply行:​​

aux<-mapply(function(x,y) x$y$family ,X,Y)

目标是能够在不编写循环的情况下访问“familly”内容。 我收到以下错误

Error in x$y$family : $ operator is invalid for atomic vectors

我在哪里犯错误?

例如:

 X<-list(x1=c(1,2),y1=c(3,4))
 Y<-c("x1","y1")
 aux<-mapply(function(x,y) x$y[[1]],X,Y)

我希望将其作为c(1,3)

1 个答案:

答案 0 :(得分:1)

使用名称向量(&#34; Y&#34;)来对&#34; X&#34;的元素进行子集化。即X[Y],循环使用sapply,并从vector中的每个list中提取第一个元素。

unname(sapply(X[Y], `[`, 1))
#[1] 1 3

如果&#34; Y&#34; vector包含&#34; X&#34;的所有names。元素,没有必要使用X[Y](如提到的@Frank),只需直接遍历&#34; X&#34;并获得第一个元素

unname(sapply(X, `[`, 1))