2016-07-14 3 views
0

스택에서 래스터를 만들고 내보내는 루프를 코딩하려고합니다. 스택은 원본 데이터 프레임 (예 : animal$ID)에서 처리 한 20 개의 개별 동물에 대한 데이터로 구성됩니다. 지금까지 작성한 코드는 다음과 같습니다.스택에서 래스터를 내보내는 루핑 코드

Error in (function (classes, fdef, mtable) : unable to find an inherited method for function ‘raster’ for signature ‘"numeric"’.

+0

? 패키지입니까, 아니면 쓰셨습니까? 코드를 살펴 보는 것이 좋을 것입니다. – FisherDisinformation

답변

0

난 당신이 이런 식으로 뭔가를 찾고 생각 : 당신은 스택을 부분 집합 때

uni<-unique(animal$ID) 

for (i in 1:length(uni)){ 
    ras <- subtest[[i]] 
    outrasname<- paste("DIRECTORY", paste('animal_ID', 
    as.character(uni[i]),sep="_"),sep="/") 
    writeRaster(ras, outrasname, format="HFA") 
} 

[] 운영자가 당신을 제공

uni<-unique(animal$ID) 

for (i in 1:length(uni)){ 
    subtest<- animalstack [i] 
    ras<-raster(subtest[[1]]) 
    values(ras)<- values(subtest[[1]]) 
    outrasname<- paste("DIRECTORY", paste('animal_ID', 
    as.character(uni[l]),sep="_"),sep="/") 
    writeRaster(ras, outrasname, format="HFA") 
} 

그러나, 나는 다음과 같은 오류가 발생합니다 모든 레이어의 해당 셀 번호에 대한 값입니다. 그래서 당신은 오류가 발생했습니다. [[]] 연산자는 지정된 레이어를 스택에서 반환합니다.

1

는 또한 bylayer 인수를 사용하고는 한 줄에 할 수행 할 수 있음은`래스터()는 '기능에서 오는가

writeRaster(animalstack, "animal_ID", bylayer=TRUE, format="HFA")