我希望你能帮助我。我一直在尝试将多个栅格数据集导入R,为每个导入的栅格数据重新编码缺失值,将它们链接到zipcodes,然后将每个栅格数据导出为具有不同名称的csv文件。 我试图使用循环但到目前为止我只有错误。这是我得到的(不要笑):
file_names=as.list(dir(pattern="home.*"))
listy<-lapply(file_names,raster, band=1)
names(listy) <- paste0("hour", seq_along(0:23))
所以现在我将所有栅格数据集放在一个列表中(listy),我只需要在每个栅格数据集上运行以下命令:
listy$hour1_r<-listy$hour1
listy$hour1_r[listy$hour1_r==9999]<-NA
y <- extract(listy$hour1_r, zipcoords)
hour1_zipcode <- cbind(zipid,y)
write.table(hour1_zipcode,file="home\\hour1.csv",sep=",",row.names=F)
如何使用循环执行此操作? 我非常感谢您提出的任何建议!
谢谢!!! 米
答案 0 :(得分:0)
使用命令创建一个函数:
f <- function(listy,filename) {
listy$hour1_r<-listy$hour1
listy$hour1_r[listy$hour1_r==9999]<-NA
y <- extract(listy$hour1_r, zipcoords)
hour1_zipcode <- cbind(zipid,y)
write.table(hour1_zipcode,file=filename,sep=",",row.names=F)
}
对所有元素运行命令:
mapply(f, listy, filename= paste0("home\\hour",seq_along(listy),".csv"))
请注意,您实际上并不希望mapply
返回任何内容,因此您可以将其包装为不可见:
invisible(mapply(f, listy, filename= paste0("home\\hour",seq_along(listy),".csv")))
您也可以在for循环中执行此操作:
filenames = paste0("home\\hour",seq_along(list),".csv")
for (i in seq_along(listy)) f(listy[[i]],filenames[[i]])
答案 1 :(得分:-1)
你能不能在for循环中做到这一点?
for(i in 1:length(listy)) {
listy[[i]] <- listy[[i]]
etc
}
或与lapply
lapply(listy, function(x) {
x[[i]] <- x[[i]]
etc
}
)