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) 길이는 양수여야 합니다.
해결 방법: 사용하지 않는 인수를 선택하는 중 오류가 발생했습니다.