Как использовать функцию which для определения строк, которые содержат ровно два вхождения числа 1? - PullRequest
0 голосов
/ 14 января 2019

Используя функцию sample.int для создания M в качестве матрицы случайных целых чисел 6x10, выбранных из {1, 2, ..., 10}, я хотел бы знать, как использовать какую функцию для определения строк которые содержат ровно 2 вхождения числа 1.

M <- matrix(sample.int(10, size=6*10, replace=TRUE), nrow = 6, ncol = 10)

Я требую, чтобы ответом была только ОДНА строка кода R (вы можете вызывать несколько функций в одной строке, конечно!).

Я считал length(which(M == 1)). Это вычисляет количество элементов, которые соответствуют значению 1. Моя мысль состояла в том, чтобы решить проблему, используя вложенные циклы for, но я не смог сократить решение до одной строки. Я не знаю, есть ли вызов функции API, который упростил бы вещи.

1 Ответ

0 голосов
/ 14 января 2019

Мы можем использовать

which(rowSums(M == 1) == 2)

M == 1 дает логическую матрицу с TRUE, где M содержит 1, затем rowSums дает число единиц в каждой строке, а which дает результат.

...