You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: vignettes/datatable-intro.Rmd
+5-5Lines changed: 5 additions & 5 deletions
Original file line number
Diff line number
Diff line change
@@ -101,7 +101,7 @@ You can also convert existing objects to a `data.table` using `setDT()` (for `da
101
101
102
102
In contrast to a `data.frame`, you can do *a lot more* than just subsetting rows and selecting columns within the frame of a `data.table`, i.e., within `[ ... ]` (NB: we might also refer to writing things inside `DT[...]` as "querying `DT`", as an analogy or in relevance to SQL). To understand it we will have to first look at the *general form* of the `data.table` syntax, as shown below:
103
103
104
-
```{r eval = FALSE}
104
+
```r
105
105
DT[i, j, by]
106
106
107
107
## R: i j by
@@ -356,7 +356,7 @@ DF[with(DF, x > 1), ]
356
356
357
357
* We can also *deselect* columns using `-` or `!`. For example:
358
358
359
-
```{r eval = FALSE}
359
+
```r
360
360
## not run
361
361
362
362
# returns all columns except arr_delay and dep_delay
Copy file name to clipboardExpand all lines: vignettes/datatable-keys-fast-subset.Rmd
+7-7Lines changed: 7 additions & 7 deletions
Original file line number
Diff line number
Diff line change
@@ -83,7 +83,7 @@ i.e., row names are more or less *an index* to rows of a *data.frame*. However,
83
83
84
84
2. And row names should be *unique*.
85
85
86
-
```{r eval = FALSE}
86
+
```r
87
87
rownames(DF) = sample(LETTERS[1:5], 10, TRUE)
88
88
# Warning: non-unique values when setting 'row.names': 'C', 'D'
89
89
# Error in `.rowNamesDF<-`(x, value = value): duplicate 'row.names' are not allowed
@@ -166,13 +166,13 @@ flights[.("JFK")]
166
166
167
167
* On single column key of *character* type, you can drop the `.()` notation and use the values directly when subsetting, like subset using row names on *data.frames*.
168
168
169
-
```{r eval = FALSE}
169
+
```r
170
170
flights["JFK"] ## same as flights[.("JFK")]
171
171
```
172
172
173
173
*Wecansubsetanyamountofvaluesasrequired
174
174
175
-
```{r eval = FALSE}
175
+
```r
176
176
flights[c("JFK", "LGA")] ## same as flights[.(c("JFK", "LGA"))]
Copy file name to clipboardExpand all lines: vignettes/datatable-programming.Rmd
+1-1Lines changed: 1 addition & 1 deletion
Original file line number
Diff line number
Diff line change
@@ -219,7 +219,7 @@ DT[, sqrt(Sepal.Length)]
219
219
```
220
220
221
221
If function name to be substituted needs to be namespace-qualified then namespace and function name can be substituted as any other symbol in the expression:
Copy file name to clipboardExpand all lines: vignettes/fr/datatable-intro.Rmd
+5-5Lines changed: 5 additions & 5 deletions
Original file line number
Diff line number
Diff line change
@@ -101,7 +101,7 @@ Vous pouvez aussi convertir des objets existants en une `data.table` en utilisan
101
101
102
102
Par rapport à un `data.frame`, vous pouvez faire *beaucoup plus de choses* qu'extraire des lignes et sélectionner des colonnes dans la structure d'une `data.table`, par exemple, avec `[ ... ]` (Notez bien : nous pourrions aussi faire référence à écrire quelque chose dans `DT[...]` comme "interroger `DT`", par analogie ou similairement à SQL). Pour le comprendre il faut d'abord que nous regardions la *forme générale* de la syntaxe `data.table`, comme indiqué ci-dessous :
103
103
104
-
```{r eval = FALSE}
104
+
```r
105
105
DT[i, j, by]
106
106
107
107
## R: i j by
@@ -356,7 +356,7 @@ DF[with(DF, x > 1), ]
356
356
357
357
* Nous pouvons également *désélectionner* des colonnes en utilisant `-` ou `!`. Par exemple :
358
358
359
-
```{r eval = FALSE}
359
+
```r
360
360
## pas d'exécution
361
361
362
362
# renvoie toutes les colonnes sauf arr_delay et dep_delay
Copy file name to clipboardExpand all lines: vignettes/fr/datatable-keys-fast-subset.Rmd
+7-7Lines changed: 7 additions & 7 deletions
Original file line number
Diff line number
Diff line change
@@ -86,7 +86,7 @@ autrement dit, les noms de lignes sont plus ou moins *un indice* des lignes d'un
86
86
87
87
2. Et les noms de ligne doivent être *uniques*.
88
88
89
-
```{r eval = FALSE}
89
+
```r
90
90
rownames(DF) = sample(LETTERS[1:5], 10, TRUE)
91
91
92
92
# Warning: non-unique values when setting 'row.names': 'C', 'D'
@@ -170,13 +170,13 @@ flights[.("JFK")]
170
170
171
171
* Pour une clé sur une seule colonne de type *caractère*, vous pouvez omettre la notation `.()` et utiliser les valeurs directement lors de l'extraction du sous-ensemble, comme si vous faisiez un sous-ensemble avec les noms de lignes dans un *data.frames*.
172
172
173
-
```{r eval = FALSE}
173
+
```r
174
174
flights["JFK"] ## identique à flights[.("JFK")]
175
175
```
176
176
177
177
*Nouspouvonsextraireautantdevaleursquenécessaire
178
178
179
-
```{r eval = FALSE}
179
+
```r
180
180
flights[c("JFK", "LGA")] ## same as flights[.(c("JFK", "LGA"))]
Nous avons vu jusqu'à présent comment définir et utiliser des clés pour extraire des sous-ensembles. Mais quel est l'avantage ? Par exemple, au lieu de faire :
386
386
387
-
```{r eval = FALSE}
387
+
```r
388
388
# clé par origin,dest columns
389
389
flights[.("JFK", "MIA")]
390
390
```
391
391
392
392
nous aurions pu faire :
393
393
394
-
```{r eval = FALSE}
394
+
```r
395
395
flights[origin=="JFK"&dest=="MIA"]
396
396
```
397
397
398
398
Un avantage évident est d'avoir une syntaxe plus courte. Mais plus encore, *extraire des sous-ensembles basés par recherche binaire* est **incroyablement rapide**.
399
399
400
400
Au fil du temps, `data.table` bénéficie de nouvelles optimisations et actuellement, obtenir un sous-ensemble basé sur cette méthode applique automatiquement la *recherche binaire*. Afin d'utiliser la méthode lente par *balayage vectoriel*, la clé doit être supprimée.
0 commit comments