Суммируя логический вектор в R - PullRequest
0 голосов
/ 06 февраля 2019
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.С помощью приведенного выше кода я могу только сложить количество раз, которое ИСТИНА присутствует в этом векторе, а не числа, которые выше каждого значения ИСТИНА.Я совсем новичок в R, как бы я решить это?

1 Ответ

0 голосов
/ 06 февраля 2019

Мы можем использовать patt для подмножества names(patt), преобразовать результат в числовой вектор и, наконец, использовать sum, чтобы получить желаемый результат, как показано ниже

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

Если вам нужночтобы делать подобные вычисления чаще, чем написать небольшую функцию

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

Janne(patt)
...