【问题标题】:finding position number of an object within a list在列表中查找对象的位置编号
【发布时间】:2020-01-25 02:43:30
【问题描述】:

我有一个清单如下:

list(c(TRUE, FALSE), TRUE, FALSE)

该列表仅包含一个带有TRUE 的对象,所有其他对象都是TRUEFALSE 的混合。 我想计算出TRUE only 对象的位置编号,在这种情况下答案是2

听起来很简单,但到目前为止我失败了。

有解决这个问题的想法吗?

【问题讨论】:

  • 为什么第一个 c(TRUE, FALSE) 向量不计数?您是在寻找全部为 True 的向量,还是希望匹配单个 TRUE 值?
  • tidyverse 标签是否表明您想要一个 tidyverse 解决方案?
  • @neilfws 是的,请
  • 如果您的列表是list(c(TRUE, FALSE), c(TRUE, TRUE), FALSE)),答案仍然是 2 吗?
  • @RonakShah 只有一个TRUE 所以效果很好

标签: r list tidyverse


【解决方案1】:

像这样使用Position

L <- list(c(TRUE, FALSE), TRUE, FALSE) # test data
Position(isTRUE, L)
## [1] 2

【讨论】:

  • ?isTRUE 帮助文件解释了为什么这可能适合您的情况 - “'isTRUE(x)' 是 'identical(TRUE, x)' 的缩写,因此也是当且仅当 'x' 是长度为 1 的逻辑向量,其唯一元素为 'TRUE' 且没有属性(甚至没有名称)时才为真。
【解决方案2】:

purrr中,我们可以使用map_lgl

lst <- list(c(TRUE, FALSE), TRUE, FALSE)
which(purrr::map_lgl(lst, all))
#[1] 2

【讨论】:

    猜你喜欢
    • 2021-12-21
    • 1970-01-01
    • 2011-11-29
    • 1970-01-01
    • 2013-04-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多