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