首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >跳过lapply中的错误,然后继续处理R中的ncdf4文件

跳过lapply中的错误,然后继续处理R中的ncdf4文件
EN

Stack Overflow用户
提问于 2015-05-30 13:40:09
回答 1查看 1.2K关注 0票数 0

我使用“子”脚本在LINUX上提交了一个R脚本。我用R写了一个函数来申请一个列表。但是,一旦遇到一个坏文件,它就会停止运行。如何编写R函数,使其跳过错误并在好的netcdf文件上继续?剧本:

代码语言:javascript
复制
##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)}

当我应用这个函数时

代码语言:javascript
复制
LST2<-lapply(LST1,fun2)

错误信息是:

代码语言:javascript
复制
 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

一旦发生这种情况,脚本将停止运行。我怎样才能保证它能一直运行在好的上?上面的代码只是第一组代码。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-05-30 16:48:51

下面是try的一个示例。注意,我大大简化了您的函数。我不能肯定这一点,因为我没有您的数据,但是这种更直接的方法在大多数情况下是有效的。当然,您不需要创建用于裁剪的SpatialPolygons对象。

代码语言:javascript
复制
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)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30546871

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档