R에서 복구하는 방법: 교체 길이가 0입니다.


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

 Error in x[1] = x[0]: replacement has length zero

이 오류는 벡터의 값을 “길이가 0인” 다른 값, 즉 존재하지 않는 값으로 바꾸려고 할 때 발생합니다.

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

오류를 재현하는 방법

R에서 10개의 값을 사용하여 다음 벡터를 생성한다고 가정합니다.

 data = c(1, 4, 5, 5, 7, 9, 12, 14, 15, 17)

이제 다음 for() 루프를 사용하여 벡터의 각 값과 그 앞의 값을 곱한다고 가정합니다.

 for (i in 1: length (data)) {
  data[i] = data[i] * data[i-1]
}

Error in data[i] <- data[i] * data[i - 1]: replacement has length zero

첫 번째 루프에서 다음 곱셈을 수행하려고 시도하기 때문에 ” 교체 길이가 0입니다 . ” 오류가 발생합니다.

  • 데이터[1] * 데이터[0]

R 인덱스는 1부터 시작하므로 data[0] 값은 존재하지 않습니다.

벡터의 0 위치에 있는 값을 인쇄해 보면 이를 확인할 수 있습니다.

 print (data[0])

numeric(0)

결과는 길이가 0인 디지털 벡터입니다. 즉, 존재하지 않습니다.

오류를 수정하는 방법

이 오류를 수정하는 방법은 존재하지 않는 벡터 값에 액세스하려고 시도하지 않는 for() 루프를 사용하는 것입니다.

이 예에서는 위치 1이 아닌 인덱스 위치 2에서 for 루프를 시작하여 이 오류를 수정할 수 있습니다.

 for (i in 2: length (data)) {
  data[i] = data[i] * data[i-1]
}

#view updated vector
data

 [1] 1 4 20 100 700 6300 75600
 [8] 1058400 15876000 269892000

존재하지 않는 벡터의 인덱스 위치에 액세스하려고 시도한 적이 없기 때문에 오류가 발생하지 않습니다.

추가 리소스

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

해결 방법: 조건의 길이가 1보다 크고 첫 번째 요소만 사용됩니다.
수정 방법: 바꾸기에는 X 줄이 있고 데이터에는 Y 줄이 있습니다.
해결 방법: 이항 연산자의 숫자가 아닌 인수
해결 방법: 희미한(X) 길이는 양수여야 합니다.
해결 방법: 사용하지 않는 인수를 선택하는 중 오류가 발생했습니다.

의견을 추가하다

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