Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在R中的函数中使用索引,每次运行后增加1个单位_R_Function - Fatal编程技术网

在R中的函数中使用索引,每次运行后增加1个单位

在R中的函数中使用索引,每次运行后增加1个单位,r,function,R,Function,我有这个函数,我想用50个不同的数据集运行它五十(50)次。每次我都必须更改第4、18和20行中的索引。(这些是在每次运行中更改的唯一参数) 1 myfunc您可以尝试,假设您希望函数以所谓的索引作为参数 myfunc <- function(file_index){ 2 library(ncdf) 3 setwd("C:\\Users\\Desktop\\data") 4 AMS <- read.csv(sprintf("C:\\Users\\Desktop\\data\\

我有这个函数,我想用50个不同的数据集运行它五十(50)次。每次我都必须更改第4、18和20行中的索引。(这些是在每次运行中更改的唯一参数)


1 myfunc您可以尝试,假设您希望函数以所谓的索引作为参数

myfunc <- function(file_index){
2  library(ncdf)
3  setwd("C:\\Users\\Desktop\\data")
4  AMS  <- read.csv(sprintf("C:\\Users\\Desktop\\data\\myarray.%d.csv", file_index),header=FALSE)
5  
6  xval <- seq(-124.5,-101.5,by=1)
7  yval <- seq(31.5,48.5,by=1)
8  nx <- length(xval)
9  ny <- length(yval)
10 data_temp <- array(NA, dim=c(nx,ny))
11    for( i in 1:nx ){
12    for( j in 1:ny ) {
13        data_temp[i,j] <- (AMS[i,j])
14    }
15    }
16 dimx <- dim.def.ncdf( "lon", "degreesE", xval,unlim=FALSE)
17 dimy <- dim.def.ncdf( "lat", "degreesN", yval,unlim=FALSE)
18 dimt <- dim.def.ncdf( "time", "year", file_index , unlim=TRUE)
19 vari <- var.def.ncdf("precipt", "mm/d", list(dimx,dimy,dimt),999999.999 )
20 ncnew <- create.ncdf(sprintf("output.%d.nc",file_index), var )
21 put.var.ncdf( ncnew, vari,data_temp, start=c(1,1,1), count=c(nx,ny,1) )
22 close.ncdf(ncnew)
}

执行类似于
lappy(vec,myfunc)
的操作,其中
myfun
将索引作为其唯一参数,
vec
是所有索引的向量。您熟悉
paste
?@damienfrancois;谢谢你的回答。不幸的是,当我使用参数“lappy”时,我得到了一条错误消息:“在match.fun(fun)中出错:找不到对象‘myfunc’。我使用“list.files()”检查finction是否在那里,它是否在那里。我的意思是在工作目录中。
myfunc <- function(file_index){
2  library(ncdf)
3  setwd("C:\\Users\\Desktop\\data")
4  AMS  <- read.csv(sprintf("C:\\Users\\Desktop\\data\\myarray.%d.csv", file_index),header=FALSE)
5  
6  xval <- seq(-124.5,-101.5,by=1)
7  yval <- seq(31.5,48.5,by=1)
8  nx <- length(xval)
9  ny <- length(yval)
10 data_temp <- array(NA, dim=c(nx,ny))
11    for( i in 1:nx ){
12    for( j in 1:ny ) {
13        data_temp[i,j] <- (AMS[i,j])
14    }
15    }
16 dimx <- dim.def.ncdf( "lon", "degreesE", xval,unlim=FALSE)
17 dimy <- dim.def.ncdf( "lat", "degreesN", yval,unlim=FALSE)
18 dimt <- dim.def.ncdf( "time", "year", file_index , unlim=TRUE)
19 vari <- var.def.ncdf("precipt", "mm/d", list(dimx,dimy,dimt),999999.999 )
20 ncnew <- create.ncdf(sprintf("output.%d.nc",file_index), var )
21 put.var.ncdf( ncnew, vari,data_temp, start=c(1,1,1), count=c(nx,ny,1) )
22 close.ncdf(ncnew)
}
lapply(1:50, myfunc)