As @thelatemail pointed out, the $
operator cannot be used to subset a matrix. This is because a matrix is just a single vector with a dimension attribute. When you used $
to try to add a new column, R converted your matrix to the lowest structure where $
can be used on the vector, which is a list.
The function you want is cbind()
(column bind). Suppose I have the matrix 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
To add the a new column from a vector called labels
, we can do
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
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…