修正方法: 結果の行数がベクトルの長さ (引数 1) の倍数ではありません。


R を使用するときに表示される警告メッセージは次のとおりです。

 Warning message:
In cbind(A, B, C):
  number of rows of result is not a multiple of vector length (arg 1)

この警告は通常、 cbind()関数を使用して、異なる長さのベクトルの列をバインドしようとしたときに発生します。

このメッセージは単なる警告であり、コードは引き続き実行されますが、得られる結果は予想とは異なる場合があることに注意してください。

次の例は、実際にこの警告を回避する方法を示しています。

警告を再現する方法

cbind()関数を使用して 3 つのベクトルをデータ フレーム内の列にバインドするとします。

 #define three vectors with different lengths
A = c(4, 2, 3, 6)
B = c(9, 1, 8, 7, 0, 7)
C = c(3, 5, 3, 3, 6, 4)

#column bind three vectors into data frame
df <- cbind(A, B, C)

#view data frame
df

Warning message:
In cbind(A, B, C):
  number of rows of result is not a multiple of vector length (arg 1)
     ABC
[1,] 4 9 3
[2,] 2 1 5
[3,] 3 8 3
[4,] 6 7 3
[5,] 4 0 6
[6,] 2 7 4

cbind関数は 3 つのベクトルすべてで機能しますが、最初のベクトルの値が単に何度も繰り返されることに注意してください。

これをRでは「リサイクル」と呼びます。

警告を回避する方法

この警告を完全に回避するには、使用する各ベクトルの長さが同じであることを確認する必要があります。

これを実現する 1 つの方法は、次のように最短ベクトルの欠損値を NA 値で埋めることです。

 #calculate max length of vectors
max_length <- max(length(A), length(B), length(C))

#set length of each vector equal to max length
length(A) <- max_length                      
length(B) <- max_length
length(C) <- max_length 

#cbind the three vectors together into a data frame
df <- cbind(A, B, C)

#view data frame
df

      ABC
[1,] 4 9 3
[2,] 2 1 5
[3,] 3 8 3
[4,] 6 7 3
[5,] NA 0 6
[6,] NA 7 4

今回は警告メッセージが表示されず、使用した 3 つのベクトルのそれぞれが同じ長さになるように、短いベクトル値に NA 値が埋め込まれているだけであることに注意してください。

追加リソース

次のチュートリアルでは、R の他の一般的なエラーを修正する方法について説明します。

R での修正方法: 引数に異なる行数が含まれる
R での修正方法: 未使用の引数を選択する際のエラー
R での修復方法: 置換の長さはゼロです

コメントを追加する

メールアドレスが公開されることはありません。 が付いている欄は必須項目です