Elemente mit gleichem Namen aus verschachtelter Liste auslesen

Wie rufe ich R-Funktionen auf, wie selektiere ich Daten, ich weiß nicht genau ....

Moderatoren: EDi, jogo

Antworten
WinterMensch

Elemente mit gleichem Namen aus verschachtelter Liste auslesen

Beitrag von WinterMensch »

Hallo.
Ich habe ein Problem wofür ich selbst keine Lösung finden kann. Vielleicht gibt es ja hier jemanden, der eine Idee dazu hat.

Ich habe eine verschachtelte Liste. Es ist aber nicht bekannt wie viele Ebenen diese Liste besitzt. Hier ist ein Beispiel für solch eine Liste:

Code: Alles auswählen

nested_list2 = list(children = list(CV = list("hello"), 
                                   children = list(CV = list(subject = "sub", value = list(key = "1", var = "45")), 
                                                   children = list(CV = list("there"), 
                                                                   TE = list(subject = "sub2"))),
                                   other = list(sonstiges = "blabla"),
                                   TE = list(var = "varvar")))
Ich möchte alle Elemente extrahieren, die "CV" or "TE" heißen. Es kann aber auch Elemente in der Liste geben, die anders heißen. Deswegen reicht ein einfaches "unlist" nicht aus.

Das hier wäre mein gewünschter Output:

Code: Alles auswählen

exp_output2 = list(CV = list("hello"),
                   CV = list(subject = "sub", value = list(key = "1", var = "45")),
                   CV = list("there"),
                   TE = list(subject = "sub2"),
                   TE = list(var = "varvar"))
Ich weiß, dass die Elemente beim Output doppelte Namen haben können, allerdings benötige ich das Format genau so.

Für jegliche Hilfe bin ich dankbar. :)
bigben
Beiträge: 2771
Registriert: Mi Okt 12, 2016 9:09 am

Re: Elemente mit gleichem Namen aus verschachtelter Liste auslesen

Beitrag von bigben »

Klingt nach einem der seltenen Anwendungsfälle für rapply, ich kriege das mit der Abfrage auf den Namen "CV" aber grad nicht hin.
---
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
WinterMensch

Re: Elemente mit gleichem Namen aus verschachtelter Liste auslesen

Beitrag von WinterMensch »

Ok, ich bin mir nicht sicher wie man rapply richtig anwendet. Ich habe es gerade so versucht:

Code: Alles auswählen

rapply(nested_list2, function(x) x[names(x)=="CV"], classes='ANY', how='replace')
Anscheinend werden auch alle Listenelemente durchlaufen aber immer nur "character(0)" zurückgegeben.. :|
jogo
Beiträge: 2085
Registriert: Fr Okt 07, 2016 8:25 am

Re: Elemente mit gleichem Namen aus verschachtelter Liste auslesen

Beitrag von jogo »

Ich habe Bedenken bezüglich des gewünschten Outputs, weil dort für verschiedene Element der gleiche Name verwendet werden soll.
Ein Ausweg könnte sein, unter einem Namen die betreffenden Elemente wieder in einer Liste zusammenzufassen.

Gruß, Jörg
Benutzeravatar
EDi
Beiträge: 1599
Registriert: Sa Okt 08, 2016 3:39 pm

Re: Elemente mit gleichem Namen aus verschachtelter Liste auslesen

Beitrag von EDi »

Hört sich für mich nach tidyr::unnest() an, kann aber gerade nicht testen...
Bitte immer ein reproduzierbares Minimalbeispiel angeben. Meinungen gehören mir und geben nicht die meines Brötchengebers wieder.

Dieser Beitrag ist lizensiert unter einer CC BY 4.0 Lizenz
Bild.
Antworten