【问题标题】:How do I apply an index vector over a list of vectors?如何在向量列表上应用索引向量?
【发布时间】:2014-09-16 16:40:37
【问题描述】:

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

一个简化的例子如下:

> 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"

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

我已经找了几天了,还没有找到任何这样做的例子,但这似乎相当简单。我在这里遗漏了什么明显的东西吗?

谢谢你, 斯科特

【问题讨论】:

    标签: r list indexing


    【解决方案1】:

    当您遇到类似于lapply 但涉及多个并行列表/向量的问题时,请考虑MapmapplyMap 只是mapply 的包装器,SIMPLIFY=FALSE 硬编码)。

    试试这个:

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

    ..或:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-04-28
      • 2017-12-13
      • 1970-01-01
      • 2022-10-18
      • 1970-01-01
      • 2021-06-08
      • 2012-06-05
      • 1970-01-01
      相关资源
      最近更新 更多