Вставьте значение в матрицу, используя уравнение в R - PullRequest
0 голосов
/ 15 января 2019

Мне нужно вставить значения в мою матрицу в R, используя уравнения. Каждый раз, когда я это делаю, я получаю сообщение об ошибке «индекс за пределами».

Редактировать: вот результаты моей попытки

Например: matrix["60","70"] = 1 вставляет значение 1 в мою строку с именем "60", столбец с именем "70" в матрице

matrix[lakes[k],lakes2[k]] = 1 дает мне ошибку

Я дважды проверил, а lakes[k] и lakes2[k] дают мне 60 и 70 соответственно. Я пытался поставить "" вокруг lakes[k] и lakes2[k].

> k=2
> lakes[k]
[1] 70
> lakes2[k]
[1] 60
> lakes_matrix[lakes[k],lakes2[k]] = 1
Error in `[<-`(`*tmp*`, lakes[k], lakes2[k], value = 1) : 
  subscript out of bounds
> lakes_matrix["70","60"] =1
> lakes_matrix
     25 63 1567 40 50 60 70 80
25   NA NA   NA NA NA NA NA NA
63   NA NA   NA NA NA NA NA NA
1567 NA NA   NA NA NA NA NA NA
40   NA NA   NA NA NA NA NA NA
50   NA NA   NA NA NA NA NA NA
60   NA NA   NA NA NA NA NA NA
70   NA NA   NA NA NA  1 NA NA
80   NA NA   NA NA NA NA NA NA

1 Ответ

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

Когда вы задаете с помощью скобочных обозначений, способ, которым R интерпретирует вашу команду, будет отличаться в зависимости от того, передаете ли вы значение типа character или типа numeric. В первом примере вы передаете 2 значения типа character

lakes_matrix["70","60"]

Возвращает значение ячейки в строке с именем "70" и столбце с именем "60". Что это, он ищет через rownames(lakes_matrix) и colnames(lakes_matrix) совпадение

Во втором примере, однако, ваш вектор lakes имеет значения типа numeric (вы можете видеть это, потому что они печатаются без кавычек вокруг них). Таким образом, эти 2 утверждения идентичны

lakes_matrix[lakes[k],lakes2[k]] 
lakes_matrix[70, 60] 

Когда вы вводите числа, R подмножества index . Таким образом, он пытается вернуть значение 70-й строки и 60-го столбца. Поскольку lakes_matrix имеет только 8 строк и 8 столбцов, это значение не существует и возвращает ошибку subscript out of bounds.


Вы можете использовать as.character, чтобы изменить значения lakes на тип character.

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