我正在尝试向现有矩阵添加新列,但每次都会收到警告.
我正在尝试这段代码:
normDisMatrix$newColumn <- labels
Run Code Online (Sandbox Code Playgroud)
收到此消息:
警告消息:在normDisMatrix $ newColumn < - labels:将LHS强制转换为列表
之后,当我检查矩阵时,它似乎为空:
dim(normDisMatrix)
NULL
Run Code Online (Sandbox Code Playgroud)
注意:标签只是数字介于1和4之间的向量.
可能是什么问题?
Ric*_*ven 22
正如@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
Run Code Online (Sandbox Code Playgroud)
要从被调用的向量中添加新列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
Run Code Online (Sandbox Code Playgroud)