2014-10-16 5 views
0

두 개의 상수 rc_Mod2000_LC, y = S01_E031_FC에서 하나의 결과를 계산하기 위해이 스크립트를 만들었습니다. rc_Mod2000_LC 상수 (래스터)이지만 S01_E031_FC 변수 (shape 파일)이고 여기서여러 쉐이프 파일 데이터 세트로 for 루프 기능을 만들려면 어떻게해야합니까?

# Extract LUC in Mod2000 
LU_S01_E031_FC_Mod2000 <- extract(x=rc_Mod2000_LC, y=S01_E031_FC) 
maj <- function(x){ 
    y <- as.numeric(names(which.max(table(x)))) 
    return(y) 
} 
LU_S01_E031_FC_Mod2000 <- extract(x=rc_Mod2000_LC, y=S01_E031_FC, fun=maj) 
colnames (LU_S01_E031_FC_Mod2000) <- c("LU_2000") 

이제 I는 루프 기능을위한 만들. rc_Mod2000_LC는 전 세계 육지 표지이고 S01_E031_FC는 타일입니다. 61 개의 shapefile 목록이 있습니다.

[[1]] 
class  : SpatialPolygonsDataFrame 
features : 16 
extent  : 30.95493, 31.02964, -1.040257, -0.9624111 (xmin, xmax, ymin, ymax) 
coord. ref. : +proj=longlat +datum=WGS84 +ellps=WGS84 +towgs84=0,0,0 
variables : 16 
names  : ID, Area_ORG, LU_1990, LU_2000, CHLU_90_00, LU_2005, CHLU_00_05,  Tile,  UNIQ_ID,  AREA, D_90_00, D_00_05, Sour_90_00, Sour_00_05, Conf_90_00, ... 
min values : 1139, 10.44,  11,  11,  1111,  0,  1112, S01_E031, S01_E031_1139, 90260.9,  100,  200, GLSE_00, GLSE_05,   3, ... 
max values : 935,  8.97,  11,  12,  1112,  0,  1230, S01_E031, S01_E031_935, 1029736.2,  520,  520, GLSE_00, GLSE_05,   3, ... 

[[2]] 
class  : SpatialPolygonsDataFrame 
features : 2 
extent  : 30.95484, 30.99854, -2.022452, -1.971676 (xmin, xmax, ymin, ymax) 
coord. ref. : +proj=longlat +datum=WGS84 +ellps=WGS84 +towgs84=0,0,0 
variables : 16 
names  : ID, Area_ORG, LU_1990, LU_2000, CHLU_90_00, LU_2005, CHLU_00_05,  Tile,  UNIQ_ID,  AREA, D_90_00, D_00_05, Sour_90_00, Sour_00_05, Conf_90_00, ... 
min values : 466,  0.06,  11,  11,  1111,  0,  1130, S02_E031, S02_E031_466, 603.7435,  100,  520, GLSE_00,  GE_06,   3, ... 
max values : 975,  3.15,  11,  11,  1111,  0,  1130, S02_E031, S02_E031_975, 31698.1260,  100,  520, GLSE_00, GLSE_05,   3, ... 

따라서 x = rc_Mod2000_LC 및 y = shapefiles 목록이 필요합니다. 누군가가 나를 도울 수 있기를 바라며, 몇 가지 설명이 필요한 경우 알려 주시기 바랍니다.

답변

0

나는 기능을 먼저 추출, 이런 짓을 할 것이다 : 당신의 이름 모양을 통해 다음

extract_shape(y=shape,x=rc_Mod2000_LC){ 
    S01_E031_FC<- readShapePoly(shape) 
    proj4string(S01_E031_FC) <- "+proj=longlat +datum=WGS84" 
    extract(y=S01_E031_FC, fun=maj) 
} 

당신 루프 :

lapply(list_shapes,extract_shape) 

을 여기서

list_shapes <- c("S01_E031_FC","S01_E032_FC","S01_E033_FC",...) 

경우, 또는 더 나은 도형 이름에는 사용할 수있는 특정 패턴이 있습니다.

list_shapes <- ls(pattern='S1_.*_FC') 
+0

따라서 extract_shape는 함수입니다. 그래서 extract_shape <-function (y = shape, x = rc_Mod2000_LC)을 써야합니다. 맞습니까? 그리고 y = 모양은 list_shapes가 아니면 안되나요? 감사합니다 –

+0

아니요 "y"는 목록 이름의 요소가 될 것입니다 ... – agstudy

+0

결국 귀하의 답변이 제대로 작동하지 않는 것 같아서 제 질문을 업데이트했습니다. –