R에서 수정하는 방법: 조건의 길이가 1보다 크고 첫 번째 요소만 사용됩니다.


R에서 발생할 수 있는 오류는 다음과 같습니다.

 Warning message:
In if (x > 1) {:
  the condition has length > 1 and only the first element will be used 

이 오류는 조건을 확인하기 위해 if() 함수를 사용하려고 시도했지만 개별 요소 대신 if() 함수에 벡터를 전달한 경우 발생합니다.

이 튜토리얼에서는 이 오류를 수정하는 방법을 정확하게 설명합니다.

오류를 재현하는 방법

R에 다음 벡터가 있다고 가정합니다.

 #define data
x <- c(2, 3, 1, 1, 5, 7)

이제 if() 함수를 사용하여 벡터 x의 각 값이 1보다 큰지 확인한 다음 해당 값에 2를 곱한다고 가정합니다.

 #if value in vector x is greater than 1, multiply it by 2
if (x>1) {
  x*2
}

Warning message:
In if (x > 1) {:
  the condition has length > 1 and only the first element will be used

if() 문에 벡터를 전달했기 때문에 경고 메시지를 받습니다.

if() 문은 한 번에 벡터의 한 요소만 확인할 수 있지만 이 코드를 사용하여 벡터의 각 요소를 한 번에 확인하려고 했습니다.

오류를 수정하는 방법

이 오류를 해결하는 가장 쉬운 방법은 ifelse() 함수를 대신 사용하는 것입니다.

 #if value in vector x is greater than 1, multiply it by 2
ifelse(x>1, x*2, x)

[1] 4 6 1 1 10 14

기본적으로 ifelse() 함수는 벡터의 각 요소를 하나씩 확인합니다. 이를 통해 이전에 발생한 오류를 피할 수 있습니다.

ifelse() 함수가 생성한 출력 값을 생성하는 방법은 다음과 같습니다.

  • 첫 번째 요소(2)는 1보다 크므로 여기에 2를 곱하여 2*2 = 4 를 얻습니다.
  • 두 번째 요소(3)는 1보다 크므로 여기에 2를 곱하여 3*2 = 6을 얻습니다.
  • 세 번째 요소(1)는 1보다 크지 않았으므로 그대로 두었습니다. 1
  • 네 번째 요소(1)는 1보다 크지 않았으므로 그대로 두었습니다. 1

등등.

관련: R에서 중첩된 For 루프를 작성하는 방법

추가 리소스

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

R에서 수정하는 방법: 강제로 인해 발생하는 NA
R에서 수정하는 방법: Dim(X)는 양수 길이를 가져야 합니다.
R에서 수정하는 방법: 이름이 이전 이름과 일치하지 않습니다.
R에서 수정하는 방법: 긴 물체의 길이가 더 짧은 물체 길이의 배수가 아닙니다.
R에서 수정하는 방법: 대비는 수준이 2개 이상인 요인에만 적용할 수 있습니다.

의견을 추가하다

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