首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过分析创建多个NCDF4文件时循环失败

通过分析创建多个NCDF4文件时循环失败
EN

Stack Overflow用户
提问于 2017-04-19 00:41:59
回答 3查看 1.4K关注 0票数 1

我使用以下脚本将分析输出写入单个NCDF4文件。脚本正在写入第一个文件并停止。我得到的错误是:-

R_nc4_create出错:权限被拒绝(创建模式为4096) nc_create出错(ncfname,list(tmp_def,tmp_def2),force_v4 = T):nc_create出错!

似乎出现了问题:-

代码语言:javascript
复制
ncfname<- sprintf('%sA.nc', Listbreak3)

我想不通了。

我的脚本是一个更大的分析的一部分。但是兴趣的部分在下面。

可能是循环的问题,但我认为循环是可以的

希望有人已经写了多个NCDF4文件

写入NCDF4文件#

代码语言:javascript
复制
  tunits<-"days since 1800-01-01 00:00:00"

  #Define dimensions
  ##################################################################
  londim<-ncdim_def("Lon","degrees_east",as.double(Lon))
  latdim<-ncdim_def("Lat", "degrees_north",as.double(Lat))
  timedim<-ncdim_def("timeset",tunits,as.double(timeset))

  #Define variables
  ##################################################################
  fillvalue<-NA

  dlname<-"2 meter air temperature"
  dlname2<-" 2 meter max air temperature"

  tmp_def<-ncvar_def("Y2ts_Stripped","deg_C",
  list(londim,latdim,timedim),fillvalue,dlname,prec = "double")
  tmp_def2<-ncvar_def("X2ts_Stripped","deg_C", 
  list(londim,latdim,timedim),fillvalue,dlname2,prec = "double")

  ncatt_put(ncout,"Lon","axis","X")
  ncatt_put(ncout, "Lat", "axis", "Y")
  ncatt_put(ncout, "timeset","axis", "T")

  #################################################
  title<-c( 1:2 )
  names(title)<-c("jack","jill")
  title<-as.data.frame(title)
  ###############################################  
   Listbreak<-filelist


   #Create Ncdf4 file and  put arrays 
   ##################################################################
   for (i in 1:length( Listbreak)){
   Listbreak2<-do.call(rbind, strsplit(Listbreak, "[[:punct:]]|\\s")) 
   [,c(1, 2,3)]###Breaking up the file name
   Listbreak3<-Listbreak2[,2]


    ncfname<- sprintf('%sA.nc', Listbreak3)

    ncout<-nc_create(ncfname,list(tmp_def,tmp_def2),force_v4=T) 

    ncvar_put(ncout,tmp_def,Y2ts_Stripped,start=NA,count = NA )

    ncvar_put(ncout,tmp_def2,X2ts_stripped, start= NA,count = NA )

    } 

    # attributes # the 0 designates the attribute as global 
    ###########################################################
    ncatt_put(ncout,0,"Make_NCDF4_File",1, prec="int")
    ncatt_put(ncout,0,"Maynooth_University",1,prec="short")
    ncatt_put(ncout,0,"AR000087828",1, prec="short")
    ncatt_put(ncout,0,"description","this is the script to write NCDF4 
    files")


    #Close file and write date to disk
    ##########################################################
    nc_close(ncout)
EN

回答 3

Stack Overflow用户

发布于 2018-07-31 01:08:56

不幸的是,我不能让你的代码工作,所以如果任何人在创建多个NetCDF文件时遇到问题,这里有一个模拟示例代码,它遍历3个矩阵,输出3个独特的.nc文件。

此外,每当我得到"4096“错误时,我发现我没有执行nc_close,一旦抛出错误,我就必须重新启动R。

代码语言:javascript
复制
#--- Set up Data 
library(ncdf4)

t1 <- c(1,2,3,4,5) ; 
t2 <- c(1,2,3,4,5,6,7,8,9,10) ; 
t3 <- rev(t2) ;   
time = list(t1,t2,t3)

h1 <- c(-2.1,-2.0,-2.2,-1.99,-2.3) ; 
h2 <- c(-2.1,-2.0,-2.2,-1.9,-2.3,-1.8,-2.4,-1.7,-2.5,-1.6) ; 
h3 <- rev(h2) ;  
height = list(h1,h2,h3)

rm(t1,t2,t3,h1,h2,h3)

#--- Define Dimensions 
dimX <- lapply(time,function(x)ncdim_def( "X", "time", x ))

#--- Define variables
var1d <- lapply(dimX,function(x)ncvar_def("height", "units", x, missval = NaN))

#--- Create the test file
doc_name = list('Case1', 'Case2','Case3')

for (i in 1:length(doc_name)){ 
  ncfname <- paste0(doc_name,'_test.nc') 
  ncout<-nc_create(ncfname[i],var1d[[i]],force_v4=T) 
  ncvar_put(ncout,var1d[[i]],height[[i]])
  nc_close(ncout)
} ;
票数 1
EN

Stack Overflow用户

发布于 2017-04-25 18:06:52

循环中的错误

Listbreak<-文件列表Listbreak 2<-do.call(rbind,strsplit(Listbreak,“[:s:]|\s”)),c(1,2,3)###Breaking up文件名Listbreak 3<-Listbreak 2,2

N <- length(Listbreak)

for (i in 1:N){

代码语言:javascript
复制
ncfname<- paste0(substr(Listbreak[i],1,16),'a.nc')
票数 0
EN

Stack Overflow用户

发布于 2021-05-08 14:09:23

使用nc_create函数时,删除部件force_v4=T

代码语言:javascript
复制
ncout <- nc_create(ncfname, var1d)

数据本身的var1d应该是一个三维数组。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43477779

复制
相关文章

相似问题

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