添加新列到矩阵错误

sel*_*cia 12 r matrix

我正在尝试向现有矩阵添加新列,但每次都会收到警告.

我正在尝试这段代码:

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)