请帮助新手出去:) 我试图在文件中循环栅格,只需将它们导入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])}
答案 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]) }