diviser les données.table

J'ai un ensemble de données.le tableau que je veux de se scinder en deux. J'ai procéder comme suit:

dt <- data.table(a=c(1,2,3,3),b=c(1,1,2,2))
sdt <- split(dt,dt$b==2)

mais si je veux quelque chose comme ça dans une prochaine étape,

sdt[[1]][,c:=.N,by=a]

Je reçois le message d'avertissement suivant.

Message d'avertissement: Dans [.data.table(sdt[[1]], , :=(c, .En N, par un = un) :
Non valide .interne.selfref détecté et corrigé par la prise d'une copie de la
toute la table, de sorte que := pouvez ajouter cette nouvelle colonne de référence. À un
plus tôt, ces données.le tableau a été copié par R. Éviter touche<-,
noms<- et attr<- qui R actuellement (et bizarrement) peut copier l'intégralité d'un
les données.table. Utilisation* syntaxe au lieu d'éviter la copie: setkey(),
setnames() et setattr(). Aussi, la liste(DT1,DT2) copier l'intégralité du DT1
et DT2 (R (liste) des copies des objets nommés), l'utilisation reflist() à la place si
en cas de besoin être mis en œuvre). Si ce message ne vous aide pas, veuillez
rapport à datatable-aide, afin que la cause peut être fixe.

Me demandais si il ya une meilleure façon de fractionnement de la table, de sorte qu'il serait plus efficace (et ne serait pas obtenir ce message)?

Pourquoi voulez-vous de diviser les données.table en premier lieu? Le fractionnement de nous de créer une liste, de sorte que l'avertissement traite avec laquelle la copie a eu lieu
Je suis la création de deux ensembles mes expériences, basé sur un temps de split.
Je suis curieux de savoir ce que le .N signifie dans ce cas?
est juste le nombre de lignes pour les groupes.
dans 1.9.7 il est propre split méthode pour les données.table, votre code fonctionne très bien sur elle.

OriginalL'auteur jamborta | 2013-02-20