Ho letto in un elenco di set di dati e chiamato questo n. Quello che desidero fare è prendere un sottoinsieme dei set di dati da n e riga unirli insieme in R. Quando provo a passare a rbind(n)
questo mi dà solo il frame di dati di tutti i nomi dei set di dati invece di mettere effettivamente gli elementi di ciascun set di dati sotto l'altro. Quello che voglio fare è legare sottoinsiemi di set di dati che condividono un nome comune. Ad esempio, 18 dei set di dati iniziano con "4." e voglio legare tutti questi insieme. C'è un modo semplice per farlo?Riga che associa un set di set di dati?
risposta
Vuoi che tu voglia fare è rbind(n[[1]],n[[2]],...)
che non è lo stesso di rbind(n)
.
Non è necessario scrivere questo fuori, è possibile utilizzare do.call
per creare ed eseguire questa call
do.call(rbind, n)
che verrà eseguito il comando desiderato. Tuttavia, questo è notoriously slow
È possibile utilizzare rbindlist
dal pacchetto data.table
a fare la stessa cosa molto più veloce
library(data.table)
rbindlist(n)
Se desideri solo quegli elementi iniziare il cui nome con 4
rbindlist(n[grep(names(n), pattern = '^4')])
Se si tenta di aggregare molti file, Potrebbe essere necessario la funzione rbind.fill
nel pacchetto plyr (non so se esiste un equivalente data.table)
ll <- list(a=data.frame(x=1,y=2,z=1),
b= data.frame(x=2,y=3),
c=data.frame(x=3:4,y=5))
library(plyr)
Reduce(rbind.fill,ll[c('a','b')]) ## subset by list names and
## apply recursively using Reduce
x y z
1 1 2 1
2 2 3 NA
Non so di un equivalente rbind.fill, ma ho implementato qualcosa http://stackoverflow.com/a/15017231/1385941 – mnel
Impressionante grazie che fa esattamente quello che voglio! Ora, come posso farlo per un sottoinsieme, ad esempio file contenenti "4." da qualche parte nel loro nome all'interno di n senza dover effettivamente andare a cercare in quali numeri della lista appartengono quei file? – user1836894
@ user1836894 Questi sono i nomi degli elementi della lista? – mnel
Sì, lo sono. Ho una lista di file e quelli sono i nomi appartenenti a un sottoinsieme dei file. – user1836894