2016-06-24 6 views
1

Dies ist die Fehlermeldung:Wie behebe ich einen Fehler in R bei einer Pearson-Korrelation?

„In writeBin (v, x @ Datei @ con, size = x @ Datei @ dsize): Problem zu Verbindung 6 zu schreiben: In .rasterFromRasterFile (grdfile, bindet = Band, Objekttyp): Größe Wertedatei nicht die Anzahl von Zellen entsprechen (angesichts der Datentyp)“

ich habe 15 Rasterdateien aus dem gleichen Umfang und Dimension. Ich möchte nur die Korrelation dieser Daten über die Zeit (15 Jahre), dh 15 Raster-Dateien herausfinden.

verwendete ich das Skript unter:

list <- c(list.files(pattern = "\\.tif$")) 
y <- stack() 
for (i in 1:length(list)){ 
y <- stack(y,list[i]) } 
corT <- layerStats(y, 'pearson', na.rm=TRUE) 

OR die gestapelte Datei direkt wie folgt verwendet

test = brick ("EOS_ALL_STACK.tif") 

corT = layerStats(test, 'pearson', na.rm=TRUE) 

ich auch diese Funktion zu nutzen versucht, Korrelationskoeffizienten zu erhalten und r squared wie diese

fun5=function(x) { if (is.na(x[1])){ NA } else { m <- lm(x[1:15] ~ c(1:15));summary(m)$coefficients[1,4]}} #fstatistic[1] 
fun5=function(x) { if (is.na(x[1])){ NA } else { m <- lm(x[1:15] ~ c(1:15));summary(m)$coefficients[2,4]}} #fstatistic[2] 
fun3=function(x) { if (is.na(x[1])){ NA } else { m <- lm(x[1:15] ~ x[1:15]);summary(m)$r.squared }} 

dann verwendet "calc", um diese ac zu berechnen ross alle Pixel. Zum Beispiel:

r.squared <- calc(y, fun3) 

Allerdings haben meine Ergebnisse immer noch die oben genannten Fehler und auch wenn es ein Ausgang ist, scheint es nicht sinnvoll zu sein.

+0

Können Sie ein reproduzierbares Beispiel geben? http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-beispiel –

+0

Ist Ihre Festplatte voll? – RobertH

+0

Ich habe wirklich versucht, dies zu tun. Meine Dateien sind sehr große Bilder des gesamten afrikanischen Kontinents. Ich konnte wirklich eine verkürzte Version von ihnen haben, aber ich finde immer noch keinen Weg, sie hier zu reproduzieren. Irgendwelche Tipps bitte? – Tyruno

Antwort

2

Diese Fehlermeldung:

writeBin(v, [email protected]@con, size = [email protected]@dsize) : problem writing to connection 

Wahrscheinlich gibt an, dass die Festplatte voll ist. Dies könnte der Datenträger Ihres Arbeitsverzeichnisses sein oder irgendwo anders, wo Sie eine Datei schreiben. Wenn Sie keinen Dateinamen angeben, können Sie unter tempfile() nach dem allgemeinen Speicherort suchen, an dem temporäre Dateien gespeichert werden (der tatsächliche Ordner wechselt zwischen den Sitzungen). Sie können dies über rasterOptions() ändern. Sie können auch vermeiden, temporäre Dateien zu schreiben, indem Sie ein Argument für die Raster-Funktionen bereitstellen.

Verwandte Themen