1. ホーム
  2. r

[解決済み] 行列の誤差に新しい列を追加する

2022-03-01 22:10:05

質問

既存の行列に新しい列を追加しようとしているのですが、毎回警告が出ます。

私はこのコードを試しています。

normDisMatrix$newColumn <- labels

このようなメッセージが表示されます。

警告メッセージです。In normDisMatrix$newColumn <- labels : Coercing LHS をリストにする

その後、行列を確認すると、NULLのようです。

dim(normDisMatrix)
NULL

ラベルは1〜4までの数字を持つ単なるベクトルです。

何が問題なのでしょうか?

解決方法は?

@thelatemail さんのご指摘のように $ 演算子を使用して行列をサブセットすることはできません。 これは、行列が単なる次元属性を持つ単一のベクトルであるためです。 このため $ を使用して新しい列を追加しようとすると、R は行列を $ はリストであるベクトルに対して使用することができます。

欲しい関数は cbind() ( c オラム バインド ). 例えば、次のような行列があるとします。 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