2014-01-10 1 views
4

제 질문은 불행히도 대답하지 않은 문제 recently posted on Stackoverflow과 매우 흡사합니다. 나는 RasterStack 개체를 12 개의 레이어 (1 년에 1 회씩)로 구성하고 있으며 레이어를 10 번 복제하여 120 개 레이어로 구성된 RasterStack으로 구성하고 각 12 번째 레이어를 비슷하게 만듭니다 (즉, , 레이어 1은 레이어 13과 동일하며 레이어 25와 비슷합니다).기존 RasterStack을 여러 번 쌓기

복제 목적의이 raster 패키지의 예를 보자 :

물론
library(raster) 

file <- system.file("external/test.grd", package = "raster") 
s <- stack(file, file, file, file, file, file, file, file, file, file, file, file) 

stack(s, s, s, s, s, s, s, s, s, s) 

class  : RasterStack 
dimensions : 115, 80, 9200, 120 (nrow, ncol, ncell, nlayers) 
resolution : 40, 40 (x, y) 
extent  : 178400, 181600, 329400, 334000 (xmin, xmax, ymin, ymax) 
coord. ref. : +init=epsg:28992 +towgs84=565.237,50.0087,465.658,-0.406857,0.350733,-1.87035,4.0812 +proj=sterea +lat_0=52.15616055555555 +lon_0=5.38763888888889 +k=0.9999079 +x_0=155000 +y_0=463000 +ellps=bessel +units=m +no_defs 
names  : test.1.1, test.2.1, test.3.1, test.4.1, test.5.1, test.6.1, test.7.1, test.8.1, test.9.1, test.10.1, test.11.1, test.12.1, test.1.2, test.2.2, test.3.2, ... 
min values : 128.434, 128.434, 128.434, 128.434, 128.434, 128.434, 128.434, 128.434, 128.434, 128.434, 128.434, 128.434, 128.434, 128.434, 128.434, ... 
max values : 1805.78, 1805.78, 1805.78, 1805.78, 1805.78, 1805.78, 1805.78, 1805.78, 1805.78, 1805.78, 1805.78, 1805.78, 1805.78, 1805.78, 1805.78, ... 

, 그것은 수동으로 코드의 마지막 줄처럼 할 수 있지만, 그것은 나에게 매우 불편 보인다. 더 나은 방법으로 내 목표를 달성하는 방법에 대한 제안은 매우 높이 평가 될 것입니다!

건배,
플로리안

은 개체 이름의 character 벡터를 취하고 객체를 반환하기 때문에 당신이 할 수 있도록, 여기 mget를 좋아할 것

답변

7

:

big.stack <- stack(mget(rep("s" , 12))) 

nlayers(big.stack) 
#[1] 144 

또는에 replicate()를 사용하여 을 사용하고 싶지 않다면 list에 넣은 다음 listlistrasterLayers으로 스태킹하면 stack()에 유효한 입력입니다.

ll <- replicate(12 , s) 

big.stack2 <- stack(ll) 

identical(big.stack , big.stack2) 
#[1] TRUE 
+0

놀라운! 그게 바로 제가 찾던 것입니다. 고마워요 :) – fdetsch

+0

@ flowla 매우 환영합니다. 귀하의 재현 가능한 예를 들면 +1. –