总结R

时间:2019-02-06 20:20:31

标签: r logical-operators

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)
}

我有一个逻辑向量 see here,我要添加所有TRUE的值。使用上面的代码,我只能求和该向量中存在TRUE的次数,而不是每个TRUE值以上的数字。我对R很陌生,我该如何解决?

1 个答案:

答案 0 :(得分:0)

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

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

如果您需要更频繁地执行这种计算,请编写一个小函数

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

Janne(patt)