J'ai de la difficulté à saisir l'essence de l' setDT()
fonction. Comme je l'ai lu le code, et j'ai souvent rencontré l'utilisation de l' setDT()
afin de créer une base de données.table. Bien entendu, l'utilisation de l' data.table()
est omniprésent. J'ai l'impression d'solidement comprendre la nature de l' data.table()
encore la pertinence de l' setDT()
m'échappe. ?setDT
me dit ceci:
setDT
convertit les listes (tous deux nommés et sans nom) et de données.les trames de données.les tables par référence.
ainsi que:
En
data.table
le langage, tousset*
fonctions de changer leur entrée par référence. C'est, aucune copie n'est faite à tous, autres que temporaires de la mémoire de travail, qui est grand comme une colonne.
Donc, cela me fait penser que je ne dois utiliser setDT()
de faire un ensemble de données.le tableau à droite? Est - setDT()
simplement d'une liste de données.table converter?
library(data.table)
a <- letters[c(19,20,1,3,11,15,22,5,18,6,12,15,23)]
b <- seq(1,41,pi)
ab <- data.frame(a,b)
d <- data.table(ab)
e <- setDT(ab)
str(d)
#Classes ‘data.table' and 'data.frame': 13 obs. of 2 variables:
# $ a: Factor w/ 12 levels "a","c","e","f",..: 9 10 1 2 5 7 11 3 8 4 ...
# $ b: num 1 4.14 7.28 10.42 13.57 ...
# - attr(*, ".internal.selfref")=<externalptr>
str(e)
#Classes ‘data.table' and 'data.frame': 13 obs. of 2 variables:
# $ a: Factor w/ 12 levels "a","c","e","f",..: 9 10 1 2 5 7 11 3 8 4 ...
# $ b: num 1 4.14 7.28 10.42 13.57 ...
# - attr(*, ".internal.selfref")=<externalptr>
Apparemment pas de différence dans ce cas. Dans un autre cas, la différence est évidente:
ba <- list(a,b)
f <- data.table(ba)
g <- setDT(ba)
str(f)
#Classes ‘data.table' and 'data.frame': 2 obs. of 1 variable:
# $ ba:List of 2
# ..$ : chr "s" "t" "a" "c" ...
# ..$ : num 1 4.14 7.28 10.42 13.57 ...
# - attr(*, ".internal.selfref")=<externalptr>
str(g)
#Classes ‘data.table' and 'data.frame': 13 obs. of 2 variables:
# $ V1: chr "s" "t" "a" "c" ...
# $ V2: num 1 4.14 7.28 10.42 13.57 ...
# - attr(*, ".internal.selfref")=<externalptr>
Quand dois-je utiliser setDT()
? Ce qui fait setDT()
- il pertinent? Pourquoi ne pas simplement faire l'original, data.table()
fonction capable de faire ce qu' setDT()
est capable de faire?