2014-03-06 46 views
3

我正在使用帶有R版本3.0.2的庫ncdf。我試圖打開和關閉一些netcdfs一遍又一遍(我可以解釋爲什麼,但這不是需要這個問題)。在外部函數調用中的NAs試圖在R中打開netcdf文件

sapply(1:14000, function(whatever) { 
    print(whatever) 
     sapply(prediction.cdfs, function(cdf) { 
     print(file.path(cdf.dir, cdf)) 
     nc = open.ncdf(file.path(cdf.dir, cdf)) 
     close.ncdf(nc) 
     }) 
}) 

後打開和關閉一遍又一遍它最終失敗,此錯誤:

[1] 3329                        

[1] "/opt/devel/cdfs/file_one.cdf" 

[1] "/opt/devel/cdfs/file_two.cdf" 

[1] "/opt/devel/cdfs/file_three.cdf" 

[1] "/opt/devel/cdfs/file_four.cdf" 

[1] "/opt/devel/cdfs/file_five.cdf" 

Error in open.ncdf(file.path(cdf.dir, cdf)) : 
    NAs in foreign function call (arg 1) 

任何人都知道這是怎麼回事?這個錯誤本質上似乎是隨機的。直到它咆哮外部函數調用的時間是可變的。我正在尋找一個解釋或只是一個工作?

感謝

+0

也許首先設置'options(error = recover)',然後運行代碼並在錯誤引發您進入瀏覽器時發現。 –

+0

@ JoshO'Brien謝謝,我會看看。儘管在循環之外拋出錯誤,但我仍然可以打開netcdf。這與恢復模式有什麼不同嗎? –

+0

我對處理netcdf文件的R軟件包一無所知,所以不能給你提供很多明智的指導。也就是說,我會使用瀏覽器來查看錯誤消息中的「NAs」來自哪裏。 –

回答

2

我相信這個問題是從我的分析上一步驟相同的文件未關閉的連接。我是一個Linux系統上運行這一點,所以我跟蹤的環打開的文件的連接,使用

watch ls -l /proc/${PID}/fd 

的連接打開和關閉就好了正在運行的,但我看到了一些舊的連接從我前面的分析奠定左右。我關閉了他們,一切都運行良好!