如何在矢量列表上应用索引向量?

时间:2014-07-24 22:54:17

标签: r list indexing

我想将一个长索引向量(50+非连续整数)应用于一长列向量(包含100多个名称的50多个字符向量),以便检索特定值(作为列表,向量或数据)帧)。

简化示例如下:

> my.list <- list(c("a","b","c"),c("d","e","f"))
> my.index <- 2:3

期望输出

[[1]]
[1] "b"
[[2]]
[1] "f"
##or
[1] "b"
[1] "f"
##or
[1] "b" "f"

我知道我可以使用以下方法从每个元素中获取相同的值:

> lapply(my.list, function(x) x[2])
##or
> lapply(my.list,'[', 2)

我可以通过以下方式从每个元素中提取第二个和第三个值:

> lapply(my.list,'[', my.index)
[[1]]
[1] "b" "c"

[[2]]
[1] "e" "f"

##or
> for(j in my.index) for(i in seq_along(my.list)) print(my.list[[i]][[j]])
[1] "b"
[1] "e"
[1] "c"
[1] "f"

我不知道如何从每个元素中提取一个值。

我一直在寻找几天,并没有找到任何这样做的例子,但它似乎相当直接。我错过了一些明显的东西吗?

谢谢你, 斯科特

1 个答案:

答案 0 :(得分:3)

每当您遇到类似lapply的问题但涉及多个并行列表/向量时,请考虑MapmapplyMap只是{{1}的包装与mapply硬编码)。

试试这个:

SIMPLIFY=FALSE

..或:

Map("[",my.list,my.index)
#[[1]]
#[1] "b"
#
#[[2]]
#[1] "f"