Penso che questa sia una domanda per principianti, ma non sembra che abbia il vocabolario giusto per una ricerca Google efficace.Iterare su elenchi memorizzati in data.frame in R
Ho un data.frame, final
, che contiene un elenco di clusters
, ognuno dei quali è un elenco di stringhe.
Vorrei iterare l'elenco delle stringhe in ogni cluster: un ciclo all'interno di un ciclo for.
for (j in final$clusters){
for (i in final$clusters$`j`){
print final$clusters$`j`[i]
}
}
j
corrisponde alle liste clusters
, e i
corrisponde agli elementi in clusters[j]
stavo cercando di farlo utilizzando la lunghezza di ogni cluster, che ho pensato che sarebbe stato qualcosa di simile length(final$clusters[1])
, ma questo dà 1, non la lunghezza della lista.
Inoltre, final$clusters[1]
dà $ '1', e nella riga successiva, tutte le stringhe in cluster 1.
Grazie.
EDIT: uscita del dput(str(final))
, come richiesto:
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
Quindi 'rapply' funziona come hai detto tu, per stampare l'elenco delle liste (grazie per i chiarimenti). Tuttavia, mi piacerebbe stampare solo uno degli elenchi alla volta (in realtà, speravo di usare 'sink' per stampare ognuno dei' cluster 'in un file diverso), ma non riesco a far funzionare 'print' , usando l'aiuto di @ pipo98 e il tuo: 'for (j in $ cluster finali) {rapply (finale $ cluster [j], f = print)}' restituisce molte righe di 'NULL'. – dd3
@ dd3 non è necessario combinare 'rapply' con' for'. 'Rapply' andrà in modo incongruo attraverso la lista per ottenere le foglie .. puoi dput dput il' dput (str (final)) 'e aggiungerlo alla tua domanda ... – agstudy
il problema è che voglio solo farlo per uno delle sottoliste alla volta. Nel tuo esempio, mi piacerebbe ottenere solo l'output di 'cluster1', scriverlo in un file e poi fare lo stesso per gli altri cluster, ognuno dei quali scrive su un file diverso. Ho aggiunto l'output richiesto alla mia domanda. Grazie per l'aiuto. – dd3