ich eine Liste Ziel des folgenden Formats habe:Matrix zur Liste Inkompatibilität mit Plotfunktion
> str(TEST.Lmm)
List of 16
$ NofSimulations: num 2
$ r : num [1:511] 0.851 1.276 1.702 2.127 2.553 ...
$ Ltheo : num [1:511] 10.7 11.4 14.2 23.7 28.3 ...
$ Lmm : num [1:511] 27.6 27.6 29.6 58.2 74.5 ...
$ Lmm.sims : num [1:511, 1:2] 0 0 14.5 35.5 35.5 ...
$ Lmm.maxdev : num [1:3] 266.5 45 25.4
$ Lmm.intdev2 : num [1:3] 7563233 333376 53004
$ Lmm.intdev1 : num [1:3] 46093 11597 4472
$ lower : num [1:511] 0 0 0 19.3 19.7 ...
$ upper : num [1:511] 0 0 14.5 35.5 35.5 ...
$ k : num 1
$ pmaxdev : num 0.333
$ pintdev2 : num 0.333
$ pintdev1 : num 0.333
$ typeIerror : num 1
$ call : language mtests.Lmm(NofSimulations = 2, k = 1, data.mpp = Ahx[[7]], permutate = TRUE, rmin = rmin, rmax = rmax)
- attr(*, "class")= chr "mtests.Lmm"
ich diese Ergebnisse ohne Probleme mit dem folgenden Plotbefehl plotten kann [mir die Funktionen eines zukünftigen R mit -Package, das bisher auf CRAN veröffentlicht wurde].
plot.mtests.Lmm(TEST.Lmm, Plot.zeroline=TRUE, main="", xlim=c(0,rmax), ylim=c(-500,500), xlab=expression(italic(r)), ylab=expression(italic(hat(L)[mm](r)-hat(L)(r))), las=1) #this works fine!
Die Plot-Funktion ist ziemlich komplex, aber was ist wichtig zu wissen ist, dass es die Verwendung des meisten des Elements in der obigen Liste nennt (zB $ NofSimulations, $ r, etc)
I habe eine Reihe von Analysen und meine Ergebnisse sind eine Matrix aus folgendem Format läuft:
> Greenland.Lmm
[,1] [,2] [,3] [,4] [,5] [,6]
NofSimulations 2 2 2 2 2 2
r Numeric,511 Numeric,512 Numeric,512 Numeric,512 Numeric,512 Numeric,511
Ltheo Numeric,511 Numeric,512 Numeric,512 Numeric,512 Numeric,512 Numeric,511
Lmm Numeric,511 Numeric,512 Numeric,512 Numeric,512 Numeric,512 Numeric,511
Lmm.sims Numeric,1022 Numeric,1024 Numeric,1024 Numeric,1024 Numeric,1024 Numeric,1022
Lmm.maxdev Numeric,3 Numeric,3 Numeric,3 Numeric,3 Numeric,3 Numeric,3
Lmm.intdev2 Numeric,3 Numeric,3 Numeric,3 Numeric,3 Numeric,3 Numeric,3
Lmm.intdev1 Numeric,3 Numeric,3 Numeric,3 Numeric,3 Numeric,3 Numeric,3
lower Numeric,511 Numeric,512 Numeric,512 Numeric,512 Numeric,512 Numeric,511
upper Numeric,511 Numeric,512 Numeric,512 Numeric,512 Numeric,512 Numeric,511
k 1 1 1 1 1 1
pmaxdev 0.3333333 0.3333333 0.3333333 0.3333333 0.3333333 0.6666667
pintdev2 0.3333333 0.3333333 0.3333333 0.3333333 0.3333333 1
pintdev1 0.3333333 0.3333333 0.3333333 0.3333333 0.3333333 0.6666667
typeIerror 1 1 1 1 1 1
call Expression Expression Expression Expression Expression Expression
ich mag jeden von diesen getrennt plotten den Plot Befehl früher vorgestellt. Allerdings, wenn ich die folgenden tun, erhalte ich eine Fehlermeldung:
# step 1) transform matrix into list
xnew<-lapply(seq_len(ncol(Greenland.Lmm[,1,drop=FALSE])), function(i) Greenland.Lmm[,1,drop=FALSE][,i])
> plot.mtests.Lmm(xnew, Plot.zeroline=TRUE, main="", xlim=c(0,max(Greenland.Lmm[,1]$r)), ylim=c(-500,500), xlab=expression(italic(r)), ylab=expression(italic(hat(L)[mm](r)-hat(L)(r))), las=1)
Plot of r vs L[mm](r)-L(r).
Error in 1:x$NofSimulations : argument of length 0
Das Problem ist, dass ich nicht die Daten in meiner Liste zugreifen kann, wie durch die plot.mtests.Lmm Funktion aufgerufen.
> xnew$NofSimulations
NULL
#vs
> xnew[[1]]$NofSimulations
[1] 2
So sind meine Optionen, um eher die plot.mtests.Lmm Funktion zu ändern (was ich würde es vorziehen, nicht) oder einen Weg, um ihn zu arbeiten finden ... aber wie? Wie kann ich die extra [1]] fahren? Außerdem würde ich gerne all das in einen netten kleinen Code (vielleicht eine for-Schleife?) Schreiben, so dass ich nicht jeden Schritt manuell replizieren muss. Ich würde mich über Ideen freuen, was der beste Ansatz wäre!
ja, sorry für alle Codes! Ich habe versucht herauszufinden, wie ich mein Problem so klar wie möglich erklären könnte ... Es könnte komplizierter geworden sein zu verstehen! Ich muss auf alle Elemente der Liste zugreifen, nicht nur auf NofSimulations. Aber jetzt, wenn ich xnew $ elementofinterest anfordere, gibt es einen NULL (funktioniert nur mit xnew [[1]] $ elementofinterest.Müssen Sie die [[]] entfernen, damit ich die Plot-Funktion aufrufen kann, ohne etwas darin zu ändern, aber ich weiß nicht, wie ich diese [[]] entfernen soll? – GodinA
Versuchen Sie 'sapply' anstelle von' lapply' zu verwenden, wenn Sie 'xnew' erstellen? –
Danke @JeffAllen, aber das hilft nicht, immer noch das gleiche Problem. – GodinA