Извлечение индексов из матрицы R для формирования новой матрицы с использованием циклов for - PullRequest
0 голосов
/ 25 апреля 2019

Я изучаю R, и в настоящее время изучаю циклы. У меня есть задача создать функцию ans (A), которая:

1) Принимает в качестве входных данных матрицу A 10x10 со значениями 1 и 0. (например, «истина и ложь»)

2) Берет элементы со значением 1 и сохраняет их в новой матрице из 2 столбцов. Первый столбец - это индекс строки, а второй столбец - это индекс столбца. Затем он возвращает эту новую индексную матрицу. Матрица индекса формируется с помощью matrix ().

Задача предполагает использование двух вложенных циклов for

Я не совсем уверен, как выполнить эту задачу, особенно с циклами for. Входная матрица A может быть создана, например, с помощью простого diag (10) перед самой функцией, а затем использована в качестве ввода для функции в целях тестирования.

Функция, использующая циклы for, берет диагональные индексы и вставляет их в новую матрицу, а затем возвращает в качестве ответа.

1 Ответ

0 голосов
/ 25 апреля 2019

Для описываемого вами случая не требуется никакой петли:

set.seed(42)
mat <- matrix(sample(0:1, 100, replace = T), ncol=10)
mat.ind <- which(mat==T, arr.ind=T)
> mat
      [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
 [1,]    1    0    1    1    0    0    1    0    1     1
 [2,]    1    1    0    1    0    0    1    0    0     0
 [3,]    0    1    1    0    0    0    1    0    0     0
 [4,]    1    0    1    1    1    1    1    0    1     1
 [5,]    1    0    0    0    0    0    1    0    1     1
 [6,]    1    1    1    1    1    1    0    1    1     1
 [7,]    1    1    0    0    1    1    0    0    0     0
 [8,]    0    0    1    0    1    0    1    0    0     1
 [9,]    1    0    0    1    1    0    1    1    0     1
[10,]    1    1    1    1    1    1    0    0    0     1

> mat.ind
      row col
 [1,]   1   1
 [2,]   2   1
 [3,]   4   1
 [4,]   5   1
 [5,]   6   1
 [6,]   7   1
  ... ... ...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...