2016-07-14 36 views
0

Ich versuche, eine Schleife zu programmieren, die Raster aus einem Stapel erstellt und exportiert. Der Stapel besteht aus Daten für 20 einzelne Tiere, die ich aus meinem ursprünglichen Datenrahmen verarbeitet habe (z. B. animal$ID). Hier ist der Code, den ich bisher geschrieben habe.Looping-Code zum Exportieren von Raster vom Stapel

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") 
} 

Allerdings bekomme ich folgende Fehlermeldung:

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

+0

Wo kommt das 'Raster()' Funktion kommen? Ist es ein Paket oder hast du es geschrieben? Wäre schön, den Code anzuschauen. – FisherDisinformation

Antwort

0

Ich glaube, Sie suchen nach etwas wie folgt aus:

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") 
} 

Wenn Sie einen Stapel der [] Operator subsetting gibt Ihnen die Werte für diese Zellennummer für jede Schicht. Deshalb haben Sie den Fehler erhalten. Der Operator gibt die angegebene Ebene vom Stapel zurück.

1

Sie können Sie auch die bylayer Argument verwenden und tun es in einer Zeile:

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