2017-03-14 184 views
-1

我有一个文件夹类似这样的各种形状文件的具体形状文件:选择输入

  • 1965_120m.shp,
  • 1967_120m.shp,
  • 1968_120m.shp,
  • 1965_50m.shp ,
  • 1967_50m.shp,
  • 1968_50m.shp,
  • 1965_10m.shp,
  • 1967_10m.shp,
  • 1968_10m.shp

(该文件夹的数据更而这仅仅是一个例子),所以我很难自己找到一种方法来选择50米的所有shape文件从这个文件夹中。

你有什么想法吗?

+0

这是关于基于他们的名字选择文件,如果它“50米”?这是如何完成的?使用使用choose.files的GUI?你需要提供更多的上下文。 – parvus

回答

0

没有一个重复的例子,这将是很难提供一个完整的解决方案,但是......

filenames <- list.files(path=".", pattern="50m.shp", ignore.case = TRUE, recursive = FALSE, include.dirs = FALSE) 

应该让你的文件和...

for(f in filenames){ 
#do stuff with each file (f) such as mySHP <- readOGR(... layer = file_path_sans_ext(f)) 
} 

会做你的东西用每个文件依次为

0

这似乎是我正在寻找,但我不明白的是输入层....文件路径假设为readOGR函数的第一个输入。这是你的脚本适应我的需要和一些更多的细节,以帮助...

input_folder<- "C:/Users/Data_Analysis/R data processing/points_rastervalue" 

output_folder<- "C:/Users/Data_Analysis/R data processing/output" 

setwd("C:/Users/Data_Analysis/R data processing/points_rastervalue") 

shps <- list.files(path=".", pattern="50m.shp", ignore.case = TRUE, recursive = FALSE, include.dirs = FALSE) 

for(shp in shps){ 
    mySHP <- readOGR('.', layer = ??) 
} 
+0

'mySHP < - readOGR('。',layer = file_path_sans_ext(shp))'应该这样做,因为您已经设置了工作目录。意识到这是一个循环,你需要在循环中进行处理和保存输出,否则它将依次打开每个文件并覆盖mySHP。 –

+0

要打开(例如)列表中的第一个文件,请使用:'mySHP < - readOGR('。',layer = file_path_sans_ext(shps [1]))'而不在'for(shp in shps){} '循环。 –

+0

为了保存输出,我应该使用循环内的assign/sapply/lapply这样的函数吗? (只要我的进一步目标是使用选定的形状文件来制作砖块) – Penelope