Как найти длину списка на основе условия в R - PullRequest
0 голосов
/ 03 июля 2018

Проблема

Я бы хотел найти длину списка.

Ожидаемый результат

Я хотел бы найти длину на основе условия.

Пример

Предположим, у меня есть список из 4 элементов следующим образом:

myve <–list(1,2,3,0)

Здесь у меня 4 элемента, один из которых равен нулю. Как я могу найти длину, извлекая нулевые значения? Затем, если длина составляет > 1, я хотел бы подставить один. То есть:

Если длина равна 4, то я бы хотел получить 4-1=3. Итак, вывод должен быть 3.

Примечание

Обратите внимание, что я работаю с проблемой, когда нулевые значения могут быть изменены от одного случая к другому. Например, для первого списка я могу иметь только одно значение 0, а для второго списка я могу иметь 2 или 3 нулевых значения.

Значения всегда положительные или нулевые.

Ответы [ 2 ]

0 голосов
/ 03 июля 2018

Используйте sapply для извлечения единиц, отличных от нулей, и суммируйте их для подсчета

sum(sapply(myve, function(x) x!=0))
0 голосов
/ 03 июля 2018

Вам просто нужно применить условие к каждому элементу. Это создаст список логических значений, а затем вы суммируете его, чтобы получить число True элементов (т. Е. Проверка вашего состояния).

В вашем случае:

sum(myve != 0)

В более сложном случае, когда признание выражается функцией f:

sapply(myve, f)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...