r-具有索引向量的子集列表



给定向量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"))

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)

最新更新