首页 > 解决方案 > 在R中总结一个逻辑向量

问题描述

patt<-c(`205` = FALSE, `210` = TRUE, `16` = TRUE, `2` = FALSE)    
totalobs<-0
{for (element in patt)
    if (element == TRUE){
    print (element)
    totalobs=totalobs+sum(element)
    }
print (totalobs)
}

我有一个逻辑向量 ,请参见此处,我想在其中添加 TRUE 的所有值。使用上面的代码,我只能将 TRUE 出现在这个向量中的次数相加,而不是每个 TRUE 值之上的数字。我对 R 很陌生,我将如何解决这个问题?

标签: rlogical-operators

解决方案


我们可以使用pattto subset names(patt),将结果转换为数字向量,最后使用sum来获得所需的输出,如下所示

sum(as.numeric(names(patt)[patt]))
#[1] 226

如果您需要更频繁地进行此类计算,请编写一个小函数

Janne <- function(x) {
  sum(as.numeric(names(x)[x]))
}

Janne(patt)

推荐阅读