Die wenig genutzte rapply
-Funktion sollte eine perfekte Lösung für viele Probleme sein (zB dieser ). Es bleibt jedoch die vom Benutzer geschriebene Funktion f
übrig, die nicht wissen kann, wo sie sich in der Struktur befindet.
Gibt es eine Möglichkeit, den Namen des Elements in der verschachtelten Liste an f
in einem rapply
-Aufruf zu übergeben? Leider ruft rapply
.Internal
ziemlich schnell auf.
Ich habe kürzlich mit verschachtelten Listen mit beliebiger Tiefe gekämpft. Letztendlich kam ich in meinem Fall zu einer mehr oder weniger akzeptablen Entscheidung. Es ist nicht die direkte Antwort auf Ihre Frage (keine rapply
Verwendung), aber es scheint die gleichen Probleme zu lösen. Ich hoffe, es kann helfen.
Anstatt zu versuchen, auf Namen von Listenelementen in rapply
zuzugreifen, habe ich einen Vektor von Namen erzeugt und nach Elementen abgefragt.
Das Erzeugen von Vektornamen ist in meinem Fall sehr schwierig. Insbesondere sollten Namen von Listenelementen sicher sein, d. H. Ohne .
symbol.
Der nächste Schritt ist der Zugriff auf das Listenelement über den String-Namen. Ich habe nichts besseres gefunden, als temporäre Dateien zu verwenden.
%Vor% Hier gibt f
nur den Wert von x
zurück, wobei x
eine Zeichenfolge mit dem vollständigen Namen des Listenelements ist.
Schließlich können wir die Liste auf pseudorekursive Weise abfragen.
%Vor%Mit Bezug auf die Frage Finden Sie die Indizes eines Elements in einer verschachtelten Liste? , Sie können schreiben:
%Vor%dann,
%Vor%Tags und Links r