해결 방법: 긴 개체 길이는 짧은 개체 길이의 배수가 아닙니다.


R에서 접할 수 있는 일반적인 경고 메시지는 다음과 같습니다.

 Warning message:
In a + b: longer object length is not a multiple of shorter object length

이 경고 메시지는 길이가 다른 두 개 이상의 벡터에 대해 연산을 수행하려고 할 때 나타납니다.

이 튜토리얼에서는 이 경고 메시지를 해결하는 데 사용할 수 있는 정확한 단계를 공유합니다.

경고 메시지를 재현하는 방법

R에 다음 두 벡터의 값을 더한다고 가정합니다.

 #define two vectors
a <- c(1, 2, 3, 4, 5)
b <- c(6, 7, 8, 9, 10)

#add the two vectors
a+b

[1] 7 9 11 13 15

결과 벡터는 각 벡터의 해당 값의 합을 보여줍니다.

두 벡터의 길이가 동일하기 때문에 경고 메시지를 받지 못했습니다.

그러나 두 번째 벡터의 값이 첫 번째 벡터보다 하나 작다고 가정해 보겠습니다.

 #define two vectors
a <- c(1, 2, 3, 4, 5)
b <- c(6, 7, 8, 9)

#add the two vectors
a+b

[1] 7 9 11 13 11

Warning message:
In a + b: longer object length is not a multiple of shorter object length

두 벡터의 길이가 다르기 때문에 더 긴 물체 길이가 더 짧은 물체 길이 경고 메시지의 배수가 아니라는 것을 알 수 있습니다.

R은 항상 첫 번째 벡터의 마지막 값(5)을 두 번째 벡터의 첫 번째 값(6)에 추가하여 최종 값 11 을 얻음으로써 계산이 작동하도록 한다는 점에 유의하는 것이 중요합니다.

각 벡터의 길이를 모르는 경우 length() 함수를 사용하여 알아낼 수 있습니다.

 #display length of vector a
length(a)

[1] 5

#display length of vector b
length(b)

[1] 4

첫 번째 벡터에는 5개의 값이 있는 반면 두 번째 벡터에는 4개의 값만 있음을 알 수 있습니다. 이것이 우리가 경고 메시지를 받는 이유입니다.

경고 메시지를 수정하는 방법

이 경고 메시지를 수정하려면 두 벡터의 길이가 동일한지 확인하면 됩니다.

예를 들어, 벡터 Ba가 벡터 a보다 하나 작은 값이라는 것을 안다면 간단히 벡터 b의 끝에 0을 추가할 수 있습니다 .

 #define two vectors
a <- c(1, 2, 3, 4, 5)
b <- c(6, 7, 8, 9)

#add zero to the end of vector b
b <- c(b, 0)

#add the two vectors
a+b

[1] 7 9 11 13 5

대부분의 경우 실제로 두 벡터 사이의 길이 차이를 알지 못하므로 다음 for 루프를 사용하여 더 짧은 벡터의 끝에 올바른 개수의 0을 추가할 수 있습니다.

 #define two vectors
a <- c(1, 2, 3, 4, 5)
b <- c(6, 7)

#add zeros to the end of vector b
for (i in (( length (b)+1): length (a)))
  +{b = c(b, 0)}

#add the two vectors
a+b

[1] 7 9 11 13 5

두 벡터의 길이가 동일하도록 벡터 b의 끝에 충분한 0을 추가했기 때문에 경고 메시지가 사라집니다.

추가 리소스

다음 튜토리얼에서는 R의 다른 일반적인 오류를 해결하는 방법을 설명합니다.

R에서 수정하는 방법: 이름이 이전 이름과 일치하지 않습니다.
R에서 수정하는 방법: 강제로 인해 발생하는 NA
R에서 복구하는 방법: 범위를 벗어난 인덱스
R에서 수정하는 방법: 대비는 수준이 2개 이상인 요인에만 적용할 수 있습니다.

의견을 추가하다

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다