Iteration über Listen gespeicherten Daten.frame in R
Ich denke, das ist eine Anfänger-Frage, aber ich anscheinend nicht die richtigen Vokabeln für eine effektive Google-Suche.
Ich habe einen Daten.Rahmen final
enthält eine Liste von clusters
, von denen jedes eine Liste von Zeichenketten ist.
Ich würde gerne Iteration über die Liste von Zeichenfolgen in jedem cluster: eine for-Schleife innerhalb einer for-Schleife.
for (j in final$clusters){
for (i in final$clusters$`j`){
print final$clusters$`j`[i]
}
}
j
entspricht den Listen in clusters
, und i
entspricht die Elemente in clusters[j]
Ich versuche zu tun, der sich über die Länge der einzelnen cluster, von denen ich dachte, wäre so etwas wie length(final$clusters[1])
, aber 1, nicht die Länge der Liste.
Auch final$clusters[1]
gibt $'1', und in der nächsten Zeile, alle Fäden in cluster 1.
Dank.
EDIT: Ausgabe von dput(str(final))
wie gewünscht:
List of 2
$ clusters :List of 1629
..$ 1 :
..$ 2 :
..$ 3 :
..$ 4 :
..$ 5 :
..$ 6 :
..$ 7 :
..$ 8 :
..$ 9 :
..$ 10 :
.. [list output truncated]
$ cluster_stats: num [1:1629, 1:6] 0.7 0.7 0.7 0.7 0.7 0.7 ...
..- attr(*, "dimnames")=List of 2
.. ..$ : chr [1:1629] "1" "2" "3" "4" ...
.. ..$ : chr [1:6] "min" "qu1" "median" "mean" ...
NULL
InformationsquelleAutor blep | 2013-02-09
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich glaube, Sie verwechseln eine
list
und eindata.frame
. Ich denke, dass Ihr final-Objekt ist eine Liste.Durchlaufen Sie die Liste, die Sie verwenden können
rapply
. Es ist eine rekursive version von lapply.Beispiel:
Also mit
rapply
Update nach Bearbeiten von OP
Mit
lapply
ich in einer Schleife durch die Namen der Liste. Für jeden Namen, bekomme ich die element-Liste mit[[
( Sie können[
wenn Sie Wand zu bekommen-Namen und heder für Dateien), dann Schreibe ich die Datei mitwrite.table
. Hier benutze ich den Namen des Elements in der Liste, um den Namen der Datei. in Ihrem Fall müssen Sie einen Dateinamen als Zahl.(1.txt,...)rapply
arbeitet, wie gesagt, drucken Sie sich die Liste der Listen (vielen Dank für die Klarstellung). Allerdings würde ich gerne drucken Sie nur eine der Listen, die in einer Zeit (eigentlich, ich hatte gehofft, zu verwendensink
drucken jedesclusters
zu einer anderen Datei), aber ich kann nichtprint
zu arbeiten, mit der @pipo98 's helfen und Ihre:for (j in final$clusters){ rapply(final$clusters[j], f = print) }
gibt viele Linien vonNULL
.keine Notwendigkeit zu kombinieren
rapply
mitfor
.Rapply
gehen recusrivly durch die Liste, um die Blätter.. kannst du bitte dput diedput(str(final))
und fügen Sie es zu Ihrer Frage...das problem ist, ich will nur tun dies für eine der Teillisten zu einer Zeit. In deinem Beispiel würde ich gerne nur die Ausgabe von
cluster1
, schreiben Sie, dass Sie zu einer Datei und dann das gleiche tun für die anderen Cluster, die jeweils ein schreiben zu einer anderen Datei. Ich habe die Ausgabe, die Sie angefordert zu meiner Frage. Vielen Dank für Ihre Hilfe.Ich update meine Antwort.
Danke! (Es funktioniert.)
InformationsquelleAutor agstudy
Ich denke, das primäre problem hier ist, dass die Art und Weise, die Sie Durchlaufen, ist hier falsch.
Ich denke, dass so etwas besser funktionieren würde:
hier ist die Dokumentation
for-Schleifen: http://manuals.bioinformatics.ucr.edu/home/programming-in-r#TOC-For-Loop
für subsetting: http://www.statmethods.net/management/subset.html
Glück
InformationsquelleAutor dval