带有索引向量的子集列表

时间:2020-08-19 05:33:54

标签: r list vector subset

给定向量foo,如何在其中bar的索引匹配bar的地方对列表foo进行子集化?

bar
[[1]]
 [1] "eney"       "e  e"       "sonalisada" "ahorro"     "sio"        "a  ene"     "a"          "ra"         "m"          "ahorro"     ""           "d"          "cre"        "genericos" 
[15] "atención"   "calidad"    "servicio"   "ine"        "iuibue tes" "yrroa"      "su salud"   "ofertas"    "mvil ares"  "u"   

foo
[1]  8 15 17 20 22

输出应类似于

[8] "ra"  [15] "atención"  [17] "servicio"  [20] "yrroa" [22] "ofertas"

以下方法无效,正确的方法是什么?

which(bar[[1]] == foo)

数据:

dput(foo)
c(8L, 15L, 17L, 20L, 22L)

dput(bar)
list(c("eney", "e  e", "sonalisada", "ahorro", "sio", "a  ene", 
"a", "ra", "m", "ahorro", "", "d", "cre", "genericos", "atención", 
"calidad", "servicio", "ine", "iuibue tes", "yrroa", "su salud", 
"ofertas", "mvil ares", "u"))

1 个答案:

答案 0 :(得分:2)

bar是一个列表,如果只有长度1的列表,则可以执行以下操作:

bar[[1]][foo]
#[1] "ra"       "atención" "servicio" "yrroa"    "ofertas" 

unlist(bar)[foo]

如果列表的长度大于1,并且您希望从每个列表中获取foo个值,则可以使用lapply

lapply(bar, `[`, foo)
#Or
#sapply(bar, `[`, foo)