수정 방법: 결과의 행 수가 벡터 길이(인수 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() 함수를 사용하여 세 개의 벡터를 데이터 프레임의 열로 묶는다고 가정해 보겠습니다.
#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 함수는 세 벡터 모두에서 작동하지만 첫 번째 벡터의 값은 단순히 반복해서 반복됩니다.
이것을 R에서는 “재활용”이라고 합니다.
경고를 피하는 방법
이 경고를 완전히 피하려면 사용하는 각 벡터의 길이가 동일한지 확인해야 합니다.
이를 달성하는 한 가지 방법은 다음과 같이 가장 짧은 벡터의 결측값을 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
이번에는 어떤 경고 메시지도 받지 않으며 짧은 벡터 값은 단순히 NA 값으로 채워져 우리가 사용한 세 벡터 각각의 길이가 동일하다는 점에 유의하세요.
추가 리소스
다음 튜토리얼에서는 R의 다른 일반적인 오류를 수정하는 방법을 설명합니다.
R에서 수정하는 방법: 인수에 다른 줄 수가 포함됩니다.
R에서 수정하는 방법: 사용하지 않는 인수를 선택하는 중 오류가 발생했습니다.
R에서 복구하는 방법: 교체 길이가 0입니다.