Ich habe von STATA zu R übergegangen, und ich experimentierte mit verschiedenen Datentypen, so dass die Datenstrukturen von R in meinem Kopf klar sind.Indizierung verschachtelte Listenstruktur in R
Hier ist, wie ich meine Datenstruktur auf:
b<-list(u=5,v=12)
c<-list(u=7)
j<-list(name="Joe",salary=55000,union=T)
bcj<-list(b,c,j)
Nun, ich hatte versucht, verschiedene Möglichkeiten, um herauszufinden, für den Zugriff auf u = 5. Ich glaube, es gibt drei Möglichkeiten:
Try1:
bcj[[1]][[1]]
Ich habe 5. Richtig!
Try2:
bcj[[1]][["u"]]
Ich habe 5. Richtig!
Try3:
bcj[[1]]$u
Ich habe 5. Richtig!
Try4
bcj[[1]][1][1]
Hier ist, was ich habe:
bcj[[1]][1][1]
$u
[1] 5
class(bcj[[1]][1][1])
[1] "list"
Frage 1: Warum ist das passiert?
Auch experimentierte ich mit dem folgenden:
bcj[[1]][1][1][1][1][1]
$u
[1] 5
class(bcj[[1]][1][1][1][1][1])
[1] "list"
Frage 2: Ich würde einen Fehler zu erwarten, weil ich nicht glaube, so viele Listen in bcj existieren, aber R gab mir eine Liste. Warum ist das passiert?
PS: Ich sah this thread auf SO, aber es geht um ein anderes Problem.
Dank Zheyuan. Das hilft. Interessanterweise, wenn ich t1 <-list (u = 5, v = 7) und dann t1 [2] [1] [1] [1] erzeuge, funktioniert das auch. T1 [[2]] [2] ergibt jedoch NA .. – watchtower
Dies ist ein normales Verhalten. Die Grundeinheit in R ist ein Vektor. 't1 [2]' gibt einen Vektor (der Länge eins) zurück. 't1 [2] [1]' gibt den ersten Eintrag in diesem Vektor zurück, der eine Zahl ist, aber in gewissem Sinne ist es auch ein Vektor der Länge eins, und dieser kann weitergehen. Wie für 't1 [[2]] [2]', fragen Sie nach einem Element, das nicht existiert, also NA anstelle einer Fehlermeldung. –
Zheyuan und p_barill, Danke für wunderbare Kommentare. Ich weiß, dass Sie meine Frage bereits beantwortet haben, aber ich, wie ich darüber nachdenke, habe ich eine kurze Frage. Im t1-Beispiel (d. H. T1 <-list (u = 5, v = 7)) ist die Länge (t1) 2, was sinnvoll ist. Auch die Länge (t1 [1]) ist 1, was auch Sinn macht, da es nur eine Liste gibt. Gibt es jedoch eine Möglichkeit, dass die Länge (t1 [1]) größer als 1 sein könnte? Ich bin mir nicht ganz sicher, also dachte ich daran, euch zu fragen. Ich würde deine Gedanken schätzen. Entschuldigung für das Hin und Her. – watchtower