Ответ 1
Как указывал @thelatemail, оператор $
не может использоваться для подмножества матрицы. Это связано с тем, что матрица представляет собой только один вектор с атрибутом измерения. Когда вы использовали $
, чтобы попытаться добавить новый столбец, R преобразует вашу матрицу в самую низкую структуру, где $
может использоваться для вектора, который является списком.
Функция, которую вы хотите, это cbind()
(c olumn bind). Предположим, что у меня есть матрица m
(m <- matrix(51:70, 4))
# [,1] [,2] [,3] [,4] [,5]
# [1,] 51 55 59 63 67
# [2,] 52 56 60 64 68
# [3,] 53 57 61 65 69
# [4,] 54 58 62 66 70
Чтобы добавить новый столбец из вектора labels
, мы можем сделать
labels <- 1:4
cbind(m, newColumn = labels)
# newColumn
# [1,] 51 55 59 63 67 1
# [2,] 52 56 60 64 68 2
# [3,] 53 57 61 65 69 3
# [4,] 54 58 62 66 70 4