向矩阵错误添加新列
Adding a new column to matrix error
我正在尝试向现有矩阵添加新列,但每次都会收到警告。
我正在尝试这段代码:
normDisMatrix$newColumn <- labels
收到此消息:
Warning message: In normDisMatrix$newColumn <- labels : Coercing LHS
to a list
之后,当我检查矩阵时,它似乎是空的:
dim(normDisMatrix)
NULL
注意: 标签只是具有 1 到 4 之间数字的向量。
可能是什么问题?
正如@thelatemail 指出的那样,$
运算符不能用于对矩阵进行子集化。这是因为矩阵只是具有维度属性的单个向量。当您使用 $
尝试添加新列时,R 将您的矩阵转换为最低结构,其中 $
可以在向量上使用,这是一个列表。
你想要的功能是cbind()
(column 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
我正在尝试向现有矩阵添加新列,但每次都会收到警告。
我正在尝试这段代码:
normDisMatrix$newColumn <- labels
收到此消息:
Warning message: In normDisMatrix$newColumn <- labels : Coercing LHS to a list
之后,当我检查矩阵时,它似乎是空的:
dim(normDisMatrix)
NULL
注意: 标签只是具有 1 到 4 之间数字的向量。
可能是什么问题?
正如@thelatemail 指出的那样,$
运算符不能用于对矩阵进行子集化。这是因为矩阵只是具有维度属性的单个向量。当您使用 $
尝试添加新列时,R 将您的矩阵转换为最低结构,其中 $
可以在向量上使用,这是一个列表。
你想要的功能是cbind()
(column 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