Sto cercando di unire un numero di dataframes usando rbind. Se chiamo directy rbind non c'è problema:perdita di frame quando si utilizza do.call
> test <- rbind(x)
> is.data.frame(x)
[1] TRUE
tuttavia, se uso do.call
corro in un problema in cui sono compressi miei colonne di caratteri e il dataframe vengono convertiti in una matrice.
>test <- do.call("rbind", x)
> is.data.frame(test)
[1] FALSE
Come per la documentazione rbind? Ho provato add stringsAsFactors = FALSE
ma nessun cambiamento nel comportamento. Le mie tabelle di dati sono qualcosa del tipo:
ID sequence descriptor
1 aaacccttt g12
2 actttgtgt e34
3 tttgggctc b12
4 ccgcgcgcg c12
… … ...
e l'uscita rbind appare come questo, ma si presenta come segue, in cui la colonna di sequenza non è più un personaggio l'uscita do.call("rbind", x)
:
ID 363 426 91
Sequence 98 353 100
descriptor g12 b12 c12
vorrei utilizzare do.call perché eseguo il ciclo di un set di frame di dati per consolidarli utilizzando uno script di seguito. Un'altra risposta utile potrebbe offrire una soluzione alternativa su come unire più dataframes mentre li si chiama in un ciclo.
stringsAsFactors = FALSE
dfs <- as.list(ls(pattern="Data_"))
for (i in 1:length(dfs)) {
x <- get(as.character(dfs[i]))
AllData <- do.call("rbind", x)
}
dfs
è la lista dei dataframes nel mio ambiente di lavoro e ho la dataframe reale utilizzando get
grazie.
questa è una risposta fantastica. – zach