2014-10-03 6 views
1

매일보아야하는 데이터 프레임이 있습니다. 보간하고 싶습니다. automap을 사용하여 매일마다 바리오 그램을 작성한 다음 새 데이터에 적용합니다. 루프를 실행하고 새로운 데이터 프레임에 결과를 저장하려고합니다. 유감스럽게도 결과가있는 데이터 프레임에는 마지막 예측 날짜 만 포함됩니다.R autoKrige 루프 (패키지 오토 맵)

coordinates(mydata) <- ~lat+long 
coordinates(new_data) <- ~lat+long 
df <- data.frame(matrix(nrow=50,ncol=10)) #new data frame for predicted valeus 

for(i in 1:ncol(mydata)) 
    kriging_new <- autoKrige(mydata[,i],mydata,newdata) 
    pred <- kriging_new$krige_output$var1.pred 
    df[,i] <- data.frame(pred) 

이 결과는 다음과 같이, 모든 열은 단지 마지막 한 값으로 채워 져야 보인다 :

X1 X2 X3 X4 X5 X6 X7 X8 X9  X10 
1 NA NA NA NA NA NA NA NA NA 12.008726 
2 NA NA NA NA NA NA NA NA NA 6.960499 
3 NA NA NA NA NA NA NA NA NA 10.894787 
4 NA NA NA NA NA NA NA NA NA 14.378945 
5 NA NA NA NA NA NA NA NA NA 17.719522 

나는 또한 말, 경고를 얻을 :

Warning message: 
In autofitVariogram(formula, data_variogram, model = model, kappa = kappa, : 
    Some models where removed for being either NULL or having a negative sill/range/nugget, 
    set verbose == TRUE for more information 

각 행에 대해 수동으로 autoKrige을 수행하면 모든 것이 올바르게 작동합니다. 그것은 일반적으로 루프가 작동하지 않는 것 같습니다. automap 패키지에서이 문제가 있습니까?

고맙습니다.

답변

2

나는 중괄호 안에 for 루프의 코드를 묶는 것을 잊은 것 같습니다.

pred <- kriging_new$krige_output$var1.pred 

을 마지막으로 사람들을 할당합니다

for(i in 1:ncol(mydata)) 
    kriging_new <- autoKrige(mydata[,i],mydata,newdata) 

만 당신이 당신의 마지막 반복의 결과를 할당 할 : 결과적으로 당신은 자신과 모든 시간을 kriging_new 덮어 쓰기, 루프 10 번 실행 예상치를 유지하는 데이터 프레임의 마지막 열 (이 시점에서 루프 카운터 i은 여전히 ​​10으로 설정 됨) :

df[, i] <- data.frame(pred) 

항상 다음과 같은 구문을 사용하여 루프를 작성하십시오.

for (condition) { 
    statement1 
    statement2 
    ... 
} 
+0

오른쪽! 고마워요! 너무 오랫동안 이것을 알아 내려고 노력했지만, 완전히 괄호로 묶어 놓았어야합니다 :-) 그것은 이제 작동합니다! – Tom