跳过lapply中的错误并继续处理R中的ncdf4文件

笑话O.

我使用“ sub”脚本在LINUX HPC上提交了R脚本。我已经在R中编写了一个函数以应用于列表。但是,一旦遇到错误的文件,它将停止运行。如何编写R函数,以使其跳过错误并在良好的netcdf文件上继续运行?剧本:

##list files in the SEVIRI data folder
LST1<-list.files(pattern="GT_SSD.*\\.nc",recursive=T, path="/data atsr/SEVIRI/2007")

##Function to create rasters
fun2<-function(x){
##Open the files  
y1<-nc_open(x)
##Get soil moisture variable
y2<-ncvar_get( y1,"LST")
y3<-t(y2)
R1<-raster(y3, xmn=-80,xmx=80,ymn=-42,ymx=80)
proj4string(R1)<-CRS("+proj=longlat +ellps=WGS84")
frm <- extent(c(-19, 19,2,29))
pfrm <- as(frm, 'SpatialPolygons')  
R3<-crop(R1,pfrm)}

当我应用该功能时

LST2<-lapply(LST1,fun2)

错误消息是:

 Error in nc_open(x) : 
 Error in nc_open trying to open file GT_SEV_2P/GT_SSD- L2-SEVIR_LST_2-20110122_010000-LIPM-0.05X0.05-V1.0.nc

一旦发生这种情况,脚本将停止运行。请问我如何确保它能继续保持良好状态?上面的代码只是第一组代码。

罗伯特·希曼斯

这是带有的示例try请注意,我大大简化了您的功能。由于我没有您的数据,我不确定这一点,但是在大多数情况下,这种更为直接的方法是可行的。您当然不需要创建SpatialPolygons对象以用于裁剪。

fun2 <- function(x, ext) {
    R1 <- try(raster(x, var="LST"), silent=TRUE)
    if (class(R1) == 'try-error') {
        return(NA)
    }
    frm <- extent(c(-19, 19, 2, 29))
    crop(R1, frm)
}

x <- lapply(LST1, fun2)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章