2017-05-10 2 views
0

내가 7

불행하게도 열에서 1과 0을 기준으로 열 여덟의 실행 수를 생산하기 위해 노력하고, 나는 점점 계속 숫자 값을 이전 열을 기반으로 열에서 실행 수를 생산 오류 "q [k - 1, 8] + q [k, 7]의 오류 : 이항 연산자에 숫자가 아닌 인수".

모든 의견을 보내 주시면 감사하겠습니다.

for(k in 3:nrow(q)){ 
    if(q[k, 7] > 0){ 
    q[k, 8] <- (q[k-1, 8] + q[k, 7]) 
    q[k, 8] <- as.numeric(q[k, 8]) 
} 
    } 

답변

0

누적 합계에 대해 이야기하고 있습니까? 입력 데이터가 어떤 모양인지 모르는 경우 ...

df <- 
    data.frame(
    col1 = c(NA, NA, NA, NA, NA, NA), 
    col2 = c(NA, NA, NA, NA, NA, NA), 
    col3 = c(NA, NA, NA, NA, NA, NA), 
    col4 = c(NA, NA, NA, NA, NA, NA), 
    col5 = c(NA, NA, NA, NA, NA, NA), 
    col6 = c(NA, NA, NA, NA, NA, NA), 
    col7 = c(0, 1, 0, 0, 1, 1) 
) 

df$col8 <- cumsum(df$col7) 

print(df) 

    col1 col2 col3 col4 col5 col6 col7 col8 
1 NA NA NA NA NA NA 0 0 
2 NA NA NA NA NA NA 1 1 
3 NA NA NA NA NA NA 0 1 
4 NA NA NA NA NA NA 0 1 
5 NA NA NA NA NA NA 1 2 
6 NA NA NA NA NA NA 1 3 
0

열 7 또는 8이 요인/문자로 저장되지 않았습니까? q [k - 1, 8] + q [k, 7] 라인은 어느 한 컬럼이 논리적 또는 숫자 이외의 것이라면 오류를 생성합니다.

열을 확인하려면 is.numeric() 및 is.logical()을 사용하십시오.