如何遍历R中的栅格并为它们指定与文件名相关联的名称

时间:2013-11-27 20:39:45

标签: r gis raster

请帮助新手出去:) 我试图在文件中循环栅格,只需将它们导入R并给它们从文件名中取出的名称。

我可以得到一串好的路径名

# Establish path to raster files
hab = "C:\\Michelle\\Michelle\\R\\Variables"         
hab = list.files(path = hab, full.names = T, recursive = T)  # path to each file
hab = hab[substring(hab,nchar(hab)-2,nchar(hab))=="ovr"]     # keep the raster file path

然后我想出了如何遍历栅格,但我可以弄清楚如何用相关的文件名命名每个栅格。我可以使用下面的第一行代码提取文件名....但.ovr仍然附加。

#Extract File names for each raster
file = unlist(lapply(hab,function(x) strsplit(x,"/")[[1]][3]))   # vector of file names
#  process each raster in HAB
for(j in 1:length(hab) ){
    a = raster(hab[j])}

1 个答案:

答案 0 :(得分:1)

使用assign但请记住,您还可以通过将有效栅格矢量传递给函数来创建栅格堆栈或砖块。原始栅格名称保留在栅格对象中。但是,要求所有栅格共享共同的分辨率,尺寸(行/列),范围和原点坐标。如果要预测空间模型,可以使用此输入并调用预测。栅格包中有一个包装器,它将预测到栅格堆栈/砖块对象并保持内存安全。我对你的代码提出了一些建议。

# if you set the working directory you do not need to return the full path in list.files.      
  setwd("C:/Michelle/Michelle/R/Variables")

# Use pattern arg to return a wildcard for ovr
  hab = list.files(getwd(), pattern="ovr$", full.names=FALSE) 

# Create raster stack and display associated names 
r <- stack(hab)
  names(r)   

# Here is how you return just the files names
  hab.names <- c( unlist( lapply(strsplit(hab,"[.]"), FUN=function(x) { x[1] })))   

# For loop assigning files names to individual raster objects
  for(j in 1:length(hab) ) { assign(hab.names[j], raster(hab[j]) }