Когда вы задаете с помощью скобочных обозначений, способ, которым 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
.