2017-12-07 4 views
0

R의 확인 패키지를 사용하여 crps를 계산하려고합니다. 데이터가 정상적으로 읽히지 만 CRPS 자체를 계산할 때 오류가 발생합니다. 시간 '인수 ", 그러나 모든 값은 실제, 아니 부정적인 가치와 난/나 값을 테스트하고 그 무시. 주위를 수색했는데 왜이 오류가 발생하는지 설명하는 해결책을 찾을 수 없습니다. netcdf 파일의 데이터를 큰 배열로 읽은 다음 해당 배열의 각 표 셀에 대해 CRPS를 계산하고 있습니다.R : CRPS를 계산하는 'times'인수가 유효하지 않습니다.

도움이 될 것입니다.

내가 사용하고 코드에서 관련 잘린는 다음과 같습니다

##for each grid cell, get obs (wbarray) and 25 ensemble members of forecast eps (fcstarray) 
for(x in 1:3600){ 
    for(y in 1:1500){  

     obs=wbarray[x,y] 
     eps=fcstarray[x,y,1:25]    

      if(!is.na(obs)){ 
       print(obs) 
       print(eps) 
       print("calculating CRPS - real value found") 
       crpsfcst=(crpsDecomposition(obs,eps)$CRPS) 
       CRPSfcst[x,y,w]=crpsfcst}}} 

그리고 출력 내가 얻을 (이전 루프에 지정된 W) :

obs: 0.3850737 
eps: 0.3382506 0.3466184 0.3508921 0.3428135 0.3416993 0.3423528 0.3307764 
0.3372431 0.3394377 0.3398165 0.3414395 0.3531360 0.3319155 0.3453161 
0.3362813 0.3449474 0.3340050 0.3278898 0.3380596 0.3379150 0.3429202 
0.3467927 0.3419354 0.3472489 0.3550797 

"calculating CRPS - real value found" 
Error in rep(0, nObs * (nMember +1)) : invalid 'times' argument 
Calls: crpsDecomposition 
Execution halted 

답변

0

R 명령 프롬프트에 crpsDecomposition을 입력하면 해당 기능의 소스 코드가 표시됩니다 . 처음 몇 줄이 보여

function (obs, eps) 
{ 
    nMember = dim(eps)[2] 
    nObs <- length(obs) 

하여 eps 데이터 는 일차원 벡터 (출력물부터) 될 나타나는 객체 때문에, 그 치수의 두 번째 요소에 nMember 설정 NULL을 될 것 NULL. 따라서 nObs*(nMember + 1)은 0으로 평가됩니다. 나는 각 열이 다른 "구성원"(이 컨텍스트에서 의미하는대로)에 해당하는 행렬이어야 할 필요가 있기 때문에 eps 형식을 다시 검토해야한다고 생각합니다. .

+0

감사합니다. 사실 나는 방금 Eps 벡터를 25 개의 열이있는 배열로 다시 포맷해야했습니다. 멋지고 쉽게 고칠 수 있습니다 - 천천히 R에 도달! – CoffeeBean

관련 문제