在R中的函数中使用索引,每次运行后增加1个单位
我有这个函数,我想用50个不同的数据集运行它五十(50)次。每次我都必须更改第4、18和20行中的索引。(这些是在每次运行中更改的唯一参数)在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\\
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)