2009-10-08 33 views
6

Sto pensando che ci sia un modo migliore per farlo.Riordina le colonne del dataframe ignorando le colonne non identificate

Sto tentando di riordinare le colonne in un dataframe. Ho una lista, ordered.colnames, che rappresenta il nuovo ordinamento - ma alcune delle colonne non esistono in dataset. Per evitare l'errore "undefined columns selected", ho spostato l'affettatura rilevante in una funzione try().

Il seguente metodo funziona, ma esiste un modo migliore per farlo?

> ordered.colnames[1:5] 
[1] "lady_22102"   "attentions_83249" "perseverance_17864" 
[4] "cecil_84477"  "cecilia_133476" 

dataset.reordered = c() 
for (i in 1:length(ordered.colnames)) { 
    col = NA 
    col = try(cbind(dataset[,ordered.colnames[i]]),silent=TRUE) 
    if (!inherits(col,"try-error")) { 
     colnames(col) = ordered.colnames[i] 
     dataset.reordered = cbind(dataset.reordered, col) 
    } 
} 

risposta

13

Non puoi farlo?

ordered.colnames <- ordered.colnames[ordered.colnames %in% colnames(dataset)] 
+0

Che funziona. Non posso credere che non ci ho pensato .. Grazie. – ariddell

+0

Vedere anche intersect – hadley

Problemi correlati