2009-10-08 5 views
6

Je pense il doit y avoir une meilleure façon de le faire.colonnes Réorganiser de dataframe tout en ignorant des colonnes non identifiées

Je suis en train de réorganiser les colonnes dans une trame de données. J'ai une liste, ordered.colnames, ce qui représente la nouvelle commande - mais certaines des colonnes n'existent pas dans dataset. Pour éviter l'erreur « undefined columns selected », je l'ai enveloppé le découpage pertinent dans une fonction try().

Les travaux de méthode suivants, mais est-il une meilleure façon de le faire?

> 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) 
    } 
} 

Répondre

13

Tu ne peux pas le faire cela?

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

qui fonctionne. Je ne peux pas croire que je n'ai pas pensé à ça .. Merci. – ariddell

+0

Voir aussi intersection – hadley

Questions connexes