Comment créer un vide datatable avec les noms de colonnes et ensuite ajouter des tables de données?
D'abord je tiens à créer un vide datatable avec les noms de colonnes, mais il échoue:
data <- data.table(va, vb, vc)
> Error in data.table(va, vb, vc) : object 'va' not found
Deuxième je veux ajouter datatable, mais il ne parvient pas trop :
data2 <- data.table(va=c(-1,0,1), vb=c(-1,0,1), vc=c(-1,0,1))
data2
va vb vc
1: -1 -1 -1
2: 0 0 0
3: 1 1 1
merge(data2,data2)
> Error in merge.data.table(data2, data2) :
Can not match keys in x and y to automatically determine appropriate `by` parameter. Please set `by` value explicitly.
Apparemment, la fonction ne peut pas identifier la by
paramètres avec deux identiques datatables. Une idée?
"l'objet va" pas trouvé c'est parce que la R suppose que c'est un nom de variable et il n'y a pas de variable existante dans votre espace de travail nommé
Pour créer un vide de données.l'utilisation de la table (en supposant que toutes les colonnes numériques):
Croissance dynamique choses dans une boucle (qui est ce qu'il semble que vous êtes en train de faire) est une mauvaise idée dans l'arrêt R.
Cette question est obsolète,
va
Pour créer un vide de données.l'utilisation de la table (en supposant que toutes les colonnes numériques):
data=data.table(va=numeric(), vb=numeric(), vc=numeric())
Croissance dynamique choses dans une boucle (qui est ce qu'il semble que vous êtes en train de faire) est une mauvaise idée dans l'arrêt R.
Cette question est obsolète,
merge(data2,data2)
les valeurs par défaut pour tous (partagé) touches très bien dans les données.tableau v1.11.x. Je suppose que cela n'a pas été mis en œuvre en arrière dans v1.9.6 (2016).OriginalL'auteur ChiseledAbs | 2016-05-22
Vous devez vous connecter pour publier un commentaire.
À créer un vide
data.table
utilisation (en supposant que toutes les colonnes sont numériques):qui se traduit par:
À faire une jointure réflexive sur toutes les colonnes utiliser (même si le résultat est le même ;-):
La raison pour laquelle vous devez spécifier le
by
paramètre est sur la documentation de la sémantique demerge
:Puisque vous n'avez pas mis les clés de la "jointure" colonnes à fusionner les tableaux de données ne sont pas claires.
Il n'est pas implicite "utiliser toutes colonne" sémantique si vous omettez le
by
paramètre (comme cité au-dessus de la clé partagée colonnes sont pris).À ajouter toutes les lignes de données.tableau à l'autre vous utilisez
rbind
(sur la ligne"bind") au lieu demerge
:Qui se traduit par:
merge
utilise désormais partagée des colonnes de clé, lorsque cela est possible. "Il n'est pas implicite "utiliser toutes colonne" sémantique si vous omettez lemerge(..., by)
paramètre" n'est plus vrai; je suppose qu'il n'a pas été appliquée de retour en 2016 (v1.9.6). Pourriez-vous corriger votre réponse?Fait, merci pour la clarification de ce!
OriginalL'auteur R Yoda
Pour créer un vide de données.table, vous pouvez démarrer à partir d'une matrice vide:
Ensuite, vous pouvez utiliser
rbindlist
d'ajouter de nouvelles données.table:Ou encore plus simple, le suivant aussi des oeuvres
OriginalL'auteur Psidom
Une autre façon de créer un vide de données.tableau avec les noms de colonnes, mais sans avoir à définir des types de données:
Le résultat est le suivant
data.table(1)
: Créer un non-NULL
de données.table à laquelle vous pouvez ajouter des colonnesV1
avec une rangée. Valeur1
NULL
) dans le lieu de1
[,`:=`(c("va", "vb", "vc"),NA)]
: Ajouter des colonnesva
,vb
,vc
V1
) et une ligne. valeur1,NA,NA,NA
NULL
valeur peut être substitué pour NA[,V1:=NULL]
: Supprimer leV1
colonne[.0]
: Retourne une ligne videentier.
Si vous n'aimez pas la magie noire de
[.0]
vous pouvez également utiliserOriginalL'auteur mpag