2017-03-14 223 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