2015-01-06 6 views
11

既存の行列に新しい列を追加しようとしていますが、毎回警告が表示されています。新しい列を行列に追加するエラー

normDisMatrix$newColumn <- labels 

このメッセージを取得する:

私はこのコードをしようとしている

警告メッセージ:normDisMatrix $ newColumn <で - ラベル:リスト

にLHS を強制変換

その後、行列をチェックするとヌルのようです:

dim(normDisMatrix) 
NULL 

注:ラベルが問題となる可能性がどのような1と4

間の数字を持っているだけのベクトルで?

+5

あなたは行列のサブセットために '$'を使用することはできません行うことができます - 下の部分を参照してください私の以前のこの質問に対する答え:http://stackoverflow.com/questions/16682576/r-error-dimx-must-have-a-positive-length/16682747#16682747 – thelatemail

+0

私たちに再現できるデータを与えるかもしれませんエラー。私は「ラベル」も「normDisMatrix」でもmyMatrixでもないという手掛かりはありません – Jason

+0

@ Jasonご意見ありがとうございます。 – seleucia

答えて

18

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

したい機能がcbind()C olumn バインド)です。私はlabelsと呼ばれるベクターから新しい列を追加するには、マトリックス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 <- 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 
関連する問題