【问题标题】:Adding a new column to matrix error向矩阵错误添加新列
【发布时间】:2015-03-03 15:33:45
【问题描述】:

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

我正在尝试这段代码:

normDisMatrix$newColumn <- labels

收到此消息:

警告信息:在 normDisMatrix$newColumn

之后,当我检查矩阵时,它似乎为空:

dim(normDisMatrix)
NULL

注意:标签只是数字介于 1 和 4 之间的向量。

可能是什么问题?

【问题讨论】:

  • 您不能使用 $ 来对矩阵进行子集化 - 请参阅我之前对此问题的回答的底部:stackoverflow.com/questions/16682576/…
  • 您可能会给我们一些数据,以便我们可以重现错误。因为我不知道“标签”是什么、“normDisMatrix”或 myMatrix 是什么
  • @Jason 谢谢你的评论,我更正了问题。
  • @thelatemai 谢谢你的回答,你能建议我一种在矩阵中添加一列的方法吗?

标签: r matrix


【解决方案1】:

正如@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

【讨论】:

    猜你喜欢
    • 2023-04-05
    • 2017-03-12
    • 2014-07-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多