2017-02-13 3 views
1

Je comprends comment je peux changer les niveaux d'une colonne lorsque je définis explicitement le nom de colonne comme dans cet exemple de Matt Dowle:Changer les niveaux de facteur dans data.tables par nom

setattr(mydt$value,"levels",c(...)) 

Bien que, dans les problèmes de la vie réelle , vous ne connaissez souvent pas les noms des colonnes. Cette technique ne semble pas fonctionner lorsque "valeur" n'est pas explicitement donné dans le code:

setattr(mydt[,get("value")],"levels",c(...)) 

Et c'est un problème. Je suppose que cette syntaxe me donne la colonne par copie et non une référence à la colonne, contrairement à Mydt $ valeur, mais je ne sais pas comment résoudre ce problème: '(

Merci

S'il vous plaît voir this older question

Répondre

4

Cela fonctionnerait.

setattr(mydt[["value"]],"levels",c(...)) 
+0

Ce Grand est exactement ce que je cherchais. – VeilleData