From 05e3bdf648bc90925d44d9bd2ca059a6ff2d5a53 Mon Sep 17 00:00:00 2001 From: venom1204 Date: Tue, 4 Mar 2025 13:06:41 +0530 Subject: [PATCH 1/5] Combine DTPRINT statements for fread verbose messages (#6848) * merged dtprints * whitespace style * Restore translation, fix whitespace * Restore translation, fix whitespace (2/2) --------- Co-authored-by: Michael Chirico Co-authored-by: Ivan K --- src/fread.c | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/src/fread.c b/src/fread.c index 3549d8af0..0ca41810c 100644 --- a/src/fread.c +++ b/src/fread.c @@ -1730,8 +1730,10 @@ int freadMain(freadMainArgs _args) { topQuoteRule = quoteRule; firstJumpEnd = ch; // to know how many bytes jump 0 is, for nrow estimate later (a less-good estimate when fill=true since line lengths vary more) if (verbose) { - DTPRINT((unsigned)sep<32 ? " sep=%#02x" : " sep='%c'", sep); // # notranslate - DTPRINT(_(" with %d fields using quote rule %d\n"), topNumFields, quoteRule); + DTPRINT((unsigned)sep<32 + ? _(" sep=%#02x with %d fields using quote rule %d\n") + : _(" sep='%c' with %d fields using quote rule %d\n"), + sep, topNumFields, quoteRule); } } } else { @@ -1780,8 +1782,10 @@ int freadMain(freadMainArgs _args) { topSkip = thisRow-thisBlockLines; if (topSkip<0) topSkip=0; // inelegant but will do for now to pass single row input such as test 890 if (verbose) { - DTPRINT((unsigned)sep<32 ? " sep=%#02x" : " sep='%c'", sep); // # notranslate - DTPRINT(_(" with %d lines of %d fields using quote rule %d\n"), topNumLines, topNumFields, topQuoteRule); + DTPRINT((unsigned)sep<32 + ? _(" sep=%#02x with %d lines of %d fields using quote rule %d\n") + : _(" sep='%c' with %d lines of %d fields using quote rule %d\n"), + sep, topNumLines, topNumFields, topQuoteRule); } } } From f248d33da28f5050768eb84ba9b7934fe09a99f6 Mon Sep 17 00:00:00 2001 From: aitap Date: Tue, 4 Mar 2025 14:23:44 +0000 Subject: [PATCH 2/5] Replace GetOption with GetOption1 (#6849) GetOption1() has been available since R-2.13, and GetOption() has been ignoring its second argument for a long time, so there's no portability cost. --- src/forder.c | 4 ++-- src/freadR.c | 2 +- src/init.c | 2 +- src/rbindlist.c | 2 +- src/subset.c | 2 +- 5 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/forder.c b/src/forder.c index a82854e22..a78785f6f 100644 --- a/src/forder.c +++ b/src/forder.c @@ -1616,7 +1616,7 @@ void putIndex(SEXP x, SEXP cols, SEXP o) { // isTRUE(getOption("datatable.use.index")) bool GetUseIndex(void) { - SEXP opt = GetOption(install("datatable.use.index"), R_NilValue); + SEXP opt = GetOption1(install("datatable.use.index")); if (!IS_TRUE_OR_FALSE(opt)) error(_("'datatable.use.index' option must be TRUE or FALSE")); // # nocov return LOGICAL(opt)[0]; @@ -1627,7 +1627,7 @@ bool GetAutoIndex(void) { // for now temporarily 'forder.auto.index' not 'auto.index' to disabled it by default // because it writes attr on .SD which is re-used by all groups leading to incorrect results // DT[, .(uN=uniqueN(.SD)), by=A] - SEXP opt = GetOption(install("datatable.forder.auto.index"), R_NilValue); + SEXP opt = GetOption1(install("datatable.forder.auto.index")); if (isNull(opt)) return false; if (!IS_TRUE_OR_FALSE(opt)) diff --git a/src/freadR.c b/src/freadR.c index 9c885ef03..769dc8e14 100644 --- a/src/freadR.c +++ b/src/freadR.c @@ -132,7 +132,7 @@ SEXP freadR( args.logical01 = LOGICAL(logical01Arg)[0]; args.logicalYN = LOGICAL(logicalYNArg)[0]; { - SEXP tt = PROTECT(GetOption(sym_old_fread_datetime_character, R_NilValue)); + SEXP tt = PROTECT(GetOption1(sym_old_fread_datetime_character)); args.oldNoDateTime = oldNoDateTime = isLogical(tt) && LENGTH(tt)==1 && LOGICAL(tt)[0]==TRUE; UNPROTECT(1); } diff --git a/src/init.c b/src/init.c index fd01e752c..ecf52b24e 100644 --- a/src/init.c +++ b/src/init.c @@ -329,7 +329,7 @@ inline double LLtoD(long long x) { int GetVerbose(void) { // don't call repetitively; save first in that case - SEXP opt = GetOption(sym_verbose, R_NilValue); + SEXP opt = GetOption1(sym_verbose); if ((!isLogical(opt) && !isInteger(opt)) || LENGTH(opt)!=1 || INTEGER(opt)[0]==NA_INTEGER) error(_("verbose option must be length 1 non-NA logical or integer")); return INTEGER(opt)[0]; diff --git a/src/rbindlist.c b/src/rbindlist.c index 7dde5ab1d..35592dc86 100644 --- a/src/rbindlist.c +++ b/src/rbindlist.c @@ -228,7 +228,7 @@ SEXP rbindlist(SEXP l, SEXP usenamesArg, SEXP fillArg, SEXP idcolArg, SEXP ignor } } if (buff[0]) { - SEXP opt = GetOption(install("datatable.rbindlist.check"), R_NilValue); + SEXP opt = GetOption1(install("datatable.rbindlist.check")); if (!isNull(opt) && !(isString(opt) && length(opt)==1)) { warning(_("options()$datatable.rbindlist.check is set but is not a single string. See news item 5 in v1.12.2.")); opt = R_NilValue; diff --git a/src/subset.c b/src/subset.c index ee8f6da3e..94783a664 100644 --- a/src/subset.c +++ b/src/subset.c @@ -296,7 +296,7 @@ SEXP subsetDT(SEXP x, SEXP rows, SEXP cols) { // API change needs update NEWS.md if (this<1 || this>LENGTH(x)) error(_("Item %d of cols is %d which is outside the range [1,ncol(x)=%d]"), i+1, this, LENGTH(x)); } - int overAlloc = checkOverAlloc(GetOption(install("datatable.alloccol"), R_NilValue)); + int overAlloc = checkOverAlloc(GetOption1(install("datatable.alloccol"))); SEXP ans = PROTECT(allocVector(VECSXP, LENGTH(cols)+overAlloc)); nprotect++; // doing alloc.col directly here; eventually alloc.col can be deprecated. // user-defined and superclass attributes get copied as from v1.12.0 From df59c7d104315160def5015d003bf2e1c93944b5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ricardo=20Demi=C3=A1n=20Villalba?= <32423469+rikivillalba@users.noreply.github.com> Date: Tue, 4 Mar 2025 13:55:34 -0300 Subject: [PATCH 3/5] Automate lang links (#6618) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * rebase from master * Update vignettes/_translation_links.R Co-authored-by: Michael Chirico * Update vignettes/_translation_links.R Co-authored-by: Michael Chirico * leave current language in, unlinked Co-authored-by: Ricardo Demián Villalba <32423469+rikivillalba@users.noreply.github.com> * merge changes on .Rmd from master, add automated links * Translate "other vignette translations in..." --------- Co-authored-by: Michael Chirico Co-authored-by: Ivan K --- vignettes/_translation_links.R | 23 +++++++++++++++++++ vignettes/datatable-benchmarking.Rmd | 6 ++--- vignettes/datatable-faq.Rmd | 6 ++--- vignettes/datatable-importing.Rmd | 7 +++--- vignettes/datatable-intro.Rmd | 7 +++--- vignettes/datatable-joins.Rmd | 4 ++++ vignettes/datatable-keys-fast-subset.Rmd | 6 ++--- vignettes/datatable-programming.Rmd | 7 +++--- vignettes/datatable-reference-semantics.Rmd | 7 +++--- vignettes/datatable-reshape.Rmd | 7 +++--- vignettes/datatable-sd-usage.Rmd | 6 ++--- ...le-secondary-indices-and-auto-indexing.Rmd | 6 ++--- vignettes/fr/datatable-benchmarking.Rmd | 4 ++++ vignettes/fr/datatable-faq.Rmd | 4 ++++ vignettes/fr/datatable-importing.Rmd | 4 ++++ vignettes/fr/datatable-intro.Rmd | 4 ++++ vignettes/fr/datatable-keys-fast-subset.Rmd | 4 ++++ vignettes/fr/datatable-programming.Rmd | 4 ++++ .../fr/datatable-reference-semantics.Rmd | 4 ++++ vignettes/fr/datatable-reshape.Rmd | 4 ++++ vignettes/fr/datatable-sd-usage.Rmd | 4 ++++ ...le-secondary-indices-and-auto-indexing.Rmd | 4 ++++ vignettes/ru/datatable-importing.Rmd | 4 ++++ vignettes/ru/datatable-intro.Rmd | 4 ++++ vignettes/ru/datatable-reshape.Rmd | 4 ++++ 25 files changed, 110 insertions(+), 34 deletions(-) create mode 100644 vignettes/_translation_links.R diff --git a/vignettes/_translation_links.R b/vignettes/_translation_links.R new file mode 100644 index 000000000..ff70a612b --- /dev/null +++ b/vignettes/_translation_links.R @@ -0,0 +1,23 @@ +# build a link list of alternative languages (may be character(0)) +# idea is to look like 'Other languages: en | fr | de' +.write.translation.links <- function(fmt) { + url = "https://rdatatable.gitlab.io/data.table/articles" + path = dirname(knitr::current_input(TRUE)) + if (basename(path) == "vignettes") { + lang = "en" + } else { + lang = basename(path) + path = dirname(path) + } + translation = dir(path, + recursive = TRUE, + pattern = glob2rx(knitr::current_input(FALSE)) + ) + transl_lang = ifelse(dirname(translation) == ".", "en", dirname(translation)) + block = if (!all(transl_lang == lang)) { + linked_transl = sprintf("[%s](%s)", transl_lang, file.path(url, sub("(?i)\\.Rmd$", ".html", translation))) + linked_transl[transl_lang == lang] = lang + sprintf(fmt, paste(linked_transl, collapse = " | ")) + } else "" + knitr::asis_output(block) +} diff --git a/vignettes/datatable-benchmarking.Rmd b/vignettes/datatable-benchmarking.Rmd index 733b4914d..1a47d9530 100644 --- a/vignettes/datatable-benchmarking.Rmd +++ b/vignettes/datatable-benchmarking.Rmd @@ -25,9 +25,9 @@ h2 { } -Translations of this document are available in - -* [French](https://rdatatable.gitlab.io/data.table/articles/fr/datatable-benchmarking.html) +```{r echo=FALSE, file='_translation_links.R'} +``` +`r .write.translation.links("Translations of this document are available in: %s")` This document is meant to guide on measuring performance of `data.table`. Single place to document best practices and traps to avoid. diff --git a/vignettes/datatable-faq.Rmd b/vignettes/datatable-faq.Rmd index 4c6f4c633..55d115d1f 100644 --- a/vignettes/datatable-faq.Rmd +++ b/vignettes/datatable-faq.Rmd @@ -26,9 +26,9 @@ h2 { } -Translations of this document are available in - -* [French](https://rdatatable.gitlab.io/data.table/articles/fr/datatable-faq.html) +```{r echo=FALSE, file='_translation_links.R'} +``` +`r .write.translation.links("Translations of this document are available in: %s")` ```{r, echo = FALSE, message = FALSE} library(data.table) diff --git a/vignettes/datatable-importing.Rmd b/vignettes/datatable-importing.Rmd index 928f0bf36..5c030af09 100644 --- a/vignettes/datatable-importing.Rmd +++ b/vignettes/datatable-importing.Rmd @@ -15,10 +15,9 @@ h2 { } -Translations of this document are available in - -* [French](https://rdatatable.gitlab.io/data.table/articles/fr/datatable-importing.html) -* [Russian](https://rdatatable.gitlab.io/data.table/articles/ru/datatable-importing.html) +```{r echo=FALSE, file='_translation_links.R'} +``` +`r .write.translation.links("Translations of this document are available in: %s")` This document is focused on using `data.table` as a dependency in other R packages. If you are interested in using `data.table` C code from a non-R application, or in calling its C functions directly, jump to the [last section](#non-r-api) of this vignette. diff --git a/vignettes/datatable-intro.Rmd b/vignettes/datatable-intro.Rmd index 101f86f52..a787e8cc5 100644 --- a/vignettes/datatable-intro.Rmd +++ b/vignettes/datatable-intro.Rmd @@ -9,10 +9,9 @@ vignette: > \usepackage[utf8]{inputenc} --- -Translations of this document are available in - -* [French](https://rdatatable.gitlab.io/data.table/articles/fr/datatable-intro.html) -* [Russian](https://rdatatable.gitlab.io/data.table/articles/ru/datatable-intro.html) +```{r echo=FALSE, file='_translation_links.R'} +``` +`r .write.translation.links("Translations of this document are available in: %s")` ```{r, echo = FALSE, message = FALSE} require(data.table) diff --git a/vignettes/datatable-joins.Rmd b/vignettes/datatable-joins.Rmd index 70b85115f..37fafd041 100644 --- a/vignettes/datatable-joins.Rmd +++ b/vignettes/datatable-joins.Rmd @@ -22,6 +22,10 @@ knitr::opts_chunk$set( ) ``` +```{r, echo=FALSE, file='_translation_links.R'} +``` +`r .write.translation.links("Translations of this document are available in: %s")` + In this vignette you will learn how to perform any join operation using resources available in the `data.table` syntax. It assumes familiarity with the `data.table` syntax. If that is not the case, please read the following vignettes: diff --git a/vignettes/datatable-keys-fast-subset.Rmd b/vignettes/datatable-keys-fast-subset.Rmd index 6f77c3de2..057f1f495 100644 --- a/vignettes/datatable-keys-fast-subset.Rmd +++ b/vignettes/datatable-keys-fast-subset.Rmd @@ -9,9 +9,9 @@ vignette: > \usepackage[utf8]{inputenc} --- -Translations of this document are available in - -* [French](https://rdatatable.gitlab.io/data.table/articles/fr/datatable-keys-fast-subset.html) +```{r echo=FALSE, file='_translation_links.R'} +``` +`r .write.translation.links("Translations of this document are available in: %s")` ```{r, echo = FALSE, message = FALSE} require(data.table) diff --git a/vignettes/datatable-programming.Rmd b/vignettes/datatable-programming.Rmd index 93c6dc556..f564e9179 100644 --- a/vignettes/datatable-programming.Rmd +++ b/vignettes/datatable-programming.Rmd @@ -9,9 +9,9 @@ vignette: > \usepackage[utf8]{inputenc} --- -Translations of this document are available in - -* [French](https://rdatatable.gitlab.io/data.table/articles/fr/datatable-programming.html) +```{r echo=FALSE, file='_translation_links.R'} +``` +`r .write.translation.links("Translations of this document are available in: %s")` ```{r init, include = FALSE} require(data.table) @@ -24,7 +24,6 @@ knitr::opts_chunk$set( ) ``` - ## Introduction `data.table`, from its very first releases, enabled the usage of `subset` and `with` (or `within`) functions by defining the `[.data.table` method. `subset` and `with` are base R functions that are useful for reducing repetition in code, enhancing readability, and reducing number the total characters the user has to type. This functionality is possible in R because of a quite unique feature called *lazy evaluation*. This feature allows a function to catch its arguments, before they are evaluated, and to evaluate them in a different scope than the one in which they were called. Let's recap usage of the `subset` function. diff --git a/vignettes/datatable-reference-semantics.Rmd b/vignettes/datatable-reference-semantics.Rmd index b6d895af1..1271196af 100644 --- a/vignettes/datatable-reference-semantics.Rmd +++ b/vignettes/datatable-reference-semantics.Rmd @@ -9,9 +9,9 @@ vignette: > \usepackage[utf8]{inputenc} --- -Translations of this document are available in - -* [French](https://rdatatable.gitlab.io/data.table/articles/fr/datatable-reference-semantics.html) +```{r echo=FALSE, file='_translation_links.R'} +``` +`r .write.translation.links("Translations of this document are available in: %s")` ```{r, echo = FALSE, message = FALSE} require(data.table) @@ -23,6 +23,7 @@ knitr::opts_chunk$set( collapse = TRUE) .old.th = setDTthreads(1) ``` + This vignette discusses *data.table*'s reference semantics which allows to *add/update/delete* columns of a *data.table by reference*, and also combine them with `i` and `by`. It is aimed at those who are already familiar with *data.table* syntax, its general form, how to subset rows in `i`, select and compute on columns, and perform aggregations by group. If you're not familiar with these concepts, please read the [`vignette("datatable-intro", package="data.table")`](datatable-intro.html) vignette first. *** diff --git a/vignettes/datatable-reshape.Rmd b/vignettes/datatable-reshape.Rmd index 2ff4b9d9a..6a3f67d9a 100644 --- a/vignettes/datatable-reshape.Rmd +++ b/vignettes/datatable-reshape.Rmd @@ -9,10 +9,9 @@ vignette: > \usepackage[utf8]{inputenc} --- -Translations of this document are available in - -* [French](https://rdatatable.gitlab.io/data.table/articles/fr/datatable-reshape.html) -* [Russian](https://rdatatable.gitlab.io/data.table/articles/ru/datatable-reshape.html) +```{r echo=FALSE, file='_translation_links.R'} +``` +`r .write.translation.links("Translations of this document are available in: %s")` ```{r, echo = FALSE, message = FALSE} require(data.table) diff --git a/vignettes/datatable-sd-usage.Rmd b/vignettes/datatable-sd-usage.Rmd index 2f91f0bb1..426a5db61 100644 --- a/vignettes/datatable-sd-usage.Rmd +++ b/vignettes/datatable-sd-usage.Rmd @@ -21,9 +21,9 @@ vignette: > } -Translations of this document are available in - -* [French](https://rdatatable.gitlab.io/data.table/articles/fr/datatable-sd-usage.html) +```{r echo=FALSE, file='_translation_links.R'} +``` +`r .write.translation.links("Translations of this document are available in: %s")` ```{r, echo = FALSE, message = FALSE} require(data.table) diff --git a/vignettes/datatable-secondary-indices-and-auto-indexing.Rmd b/vignettes/datatable-secondary-indices-and-auto-indexing.Rmd index 7be917032..5148a1fdb 100644 --- a/vignettes/datatable-secondary-indices-and-auto-indexing.Rmd +++ b/vignettes/datatable-secondary-indices-and-auto-indexing.Rmd @@ -9,9 +9,9 @@ vignette: > \usepackage[utf8]{inputenc} --- -Translations of this document are available in - -* [French](https://rdatatable.gitlab.io/data.table/articles/fr/datatable-secondary-indices-and-auto-indexing.html) +```{r echo=FALSE, file='_translation_links.R'} +``` +`r .write.translation.links("Translations of this document are available in: %s")` ```{r, echo = FALSE, message = FALSE} require(data.table) diff --git a/vignettes/fr/datatable-benchmarking.Rmd b/vignettes/fr/datatable-benchmarking.Rmd index 0539b155a..846f34c0b 100644 --- a/vignettes/fr/datatable-benchmarking.Rmd +++ b/vignettes/fr/datatable-benchmarking.Rmd @@ -18,6 +18,10 @@ h2 { } +```{r echo=FALSE, file='../_translation_links.R'} +``` +`r .write.translation.links("Translations of this document are available in: %s")` + Ce document a pour but de guider la mesure de la performance de `data.table`. Il centralise la documentation des meilleures pratiques et des pièges à éviter. # fread : effacer les caches diff --git a/vignettes/fr/datatable-faq.Rmd b/vignettes/fr/datatable-faq.Rmd index dc82003c6..a90bfc5cd 100644 --- a/vignettes/fr/datatable-faq.Rmd +++ b/vignettes/fr/datatable-faq.Rmd @@ -19,6 +19,10 @@ h2 { #TOC { width: 100%; } +```{r echo=FALSE, file='../_translation_links.R'} +``` +`r .write.translation.links("Translations of this document are available in: %s")` + ```{r, echo = FALSE, message = FALSE} library(data.table) knitr::opts_chunk$set( diff --git a/vignettes/fr/datatable-importing.Rmd b/vignettes/fr/datatable-importing.Rmd index 12424f76d..27823fb3d 100644 --- a/vignettes/fr/datatable-importing.Rmd +++ b/vignettes/fr/datatable-importing.Rmd @@ -15,6 +15,10 @@ h2 { } +```{r echo=FALSE, file='../_translation_links.R'} +``` +`r .write.translation.links("Translations of this document are available in: %s")` + Ce document se concentre sur l'utilisation de `data.table` comme dépendance dans d'autres packages R. Si vous souhaitez utiliser le code C de `data.table` à partir d'une application non-R, ou appeler directement ses fonctions C, passez à la [dernière section](#non-r-API) de cette vignette. Importer `data.table` n'est pas différent qu'importer d'autres packages R. Cette vignette a pour but de répondre aux questions les plus courantes à ce sujet; les indications présentées ici peuvent être appliquées à d'autres packages R. diff --git a/vignettes/fr/datatable-intro.Rmd b/vignettes/fr/datatable-intro.Rmd index 39f457a9d..ece8cf203 100644 --- a/vignettes/fr/datatable-intro.Rmd +++ b/vignettes/fr/datatable-intro.Rmd @@ -9,6 +9,10 @@ vignette: > \usepackage[utf8]{inputenc} --- +```{r echo=FALSE, file='../_translation_links.R'} +``` +`r .write.translation.links("Translations of this document are available in: %s")` + ```{r, echo = FALSE, message = FALSE} require(data.table) knitr::opts_chunk$set( diff --git a/vignettes/fr/datatable-keys-fast-subset.Rmd b/vignettes/fr/datatable-keys-fast-subset.Rmd index 40a111d1d..b052171fc 100644 --- a/vignettes/fr/datatable-keys-fast-subset.Rmd +++ b/vignettes/fr/datatable-keys-fast-subset.Rmd @@ -9,6 +9,10 @@ vignette: > \usepackage[utf8]{inputenc} --- +```{r echo=FALSE, file='../_translation_links.R'} +``` +`r .write.translation.links("Translations of this document are available in: %s")` + ```{r, echo = FALSE, message = FALSE} require(data.table) knitr::opts_chunk$set( diff --git a/vignettes/fr/datatable-programming.Rmd b/vignettes/fr/datatable-programming.Rmd index efd990157..7249c2de2 100644 --- a/vignettes/fr/datatable-programming.Rmd +++ b/vignettes/fr/datatable-programming.Rmd @@ -9,6 +9,10 @@ vignette: > \usepackage[utf8]{inputenc} --- +```{r echo=FALSE, file='../_translation_links.R'} +``` +`r .write.translation.links("Translations of this document are available in: %s")` + ```{r init, include = FALSE} require(data.table) knitr::opts_chunk$set( diff --git a/vignettes/fr/datatable-reference-semantics.Rmd b/vignettes/fr/datatable-reference-semantics.Rmd index 32651eac0..b383e96d1 100644 --- a/vignettes/fr/datatable-reference-semantics.Rmd +++ b/vignettes/fr/datatable-reference-semantics.Rmd @@ -9,6 +9,10 @@ vignette: > \usepackage[utf8]{inputenc} --- +```{r echo=FALSE, file='../_translation_links.R'} +``` +`r .write.translation.links("Translations of this document are available in: %s")` + ```{r, echo = FALSE, message = FALSE} require(data.table) knitr::opts_chunk$set( diff --git a/vignettes/fr/datatable-reshape.Rmd b/vignettes/fr/datatable-reshape.Rmd index a251e682b..d56ae6057 100644 --- a/vignettes/fr/datatable-reshape.Rmd +++ b/vignettes/fr/datatable-reshape.Rmd @@ -9,6 +9,10 @@ vignette: > \usepackage[utf8]{inputenc} --- +```{r echo=FALSE, file='../_translation_links.R'} +``` +`r .write.translation.links("Translations of this document are available in: %s")` + ```{r, echo = FALSE, message = FALSE} require(data.table) knitr::opts_chunk$set( diff --git a/vignettes/fr/datatable-sd-usage.Rmd b/vignettes/fr/datatable-sd-usage.Rmd index 2ea29c19e..0106a08fc 100644 --- a/vignettes/fr/datatable-sd-usage.Rmd +++ b/vignettes/fr/datatable-sd-usage.Rmd @@ -12,6 +12,10 @@ vignette: > \usepackage[utf8]{inputenc} --- +```{r echo=FALSE, file='../_translation_links.R'} +``` +`r .write.translation.links("Translations of this document are available in: %s")` + ```{r, echo = FALSE, message = FALSE} require(data.table) knitr::opts_chunk$set( diff --git a/vignettes/fr/datatable-secondary-indices-and-auto-indexing.Rmd b/vignettes/fr/datatable-secondary-indices-and-auto-indexing.Rmd index d25b0641c..2fa3a1b5a 100644 --- a/vignettes/fr/datatable-secondary-indices-and-auto-indexing.Rmd +++ b/vignettes/fr/datatable-secondary-indices-and-auto-indexing.Rmd @@ -9,6 +9,10 @@ vignette: > \usepackage[utf8]{inputenc} --- +```{r echo=FALSE, file='../_translation_links.R'} +``` +`r .write.translation.links("Translations of this document are available in: %s")` + ```{r, echo = FALSE, message = FALSE} require(data.table) knitr::opts_chunk$set( diff --git a/vignettes/ru/datatable-importing.Rmd b/vignettes/ru/datatable-importing.Rmd index 111a78367..51aaac2fb 100644 --- a/vignettes/ru/datatable-importing.Rmd +++ b/vignettes/ru/datatable-importing.Rmd @@ -15,6 +15,10 @@ h2 { } +```{r echo=FALSE, file='../_translation_links.R'} +``` +`r .write.translation.links("Данное руководство также доступно на следующих языках: %s")` + Этот документ рассказывает об использовании `data.table` в качестве зависимости в других R-пакетах. Если вас интересует использование C-кода `data.table` в приложениях, не связанных с R, или прямой вызов его diff --git a/vignettes/ru/datatable-intro.Rmd b/vignettes/ru/datatable-intro.Rmd index be16e190c..4fe1427f7 100644 --- a/vignettes/ru/datatable-intro.Rmd +++ b/vignettes/ru/datatable-intro.Rmd @@ -9,6 +9,10 @@ vignette: > \usepackage[utf8]{inputenc} --- +```{r echo=FALSE, file='../_translation_links.R'} +``` +`r .write.translation.links("Данное руководство также доступно на следующих языках: %s")` + ```{r, echo = FALSE, message = FALSE} require(data.table) knitr::opts_chunk$set( diff --git a/vignettes/ru/datatable-reshape.Rmd b/vignettes/ru/datatable-reshape.Rmd index ad5bebe17..dc205f0b7 100644 --- a/vignettes/ru/datatable-reshape.Rmd +++ b/vignettes/ru/datatable-reshape.Rmd @@ -20,6 +20,10 @@ knitr::opts_chunk$set( .old.th = setDTthreads(1) ``` +```{r echo=FALSE, file='../_translation_links.R'} +``` +`r .write.translation.links("Данное руководство также доступно на следующих языках: %s")` + В этом руководстве рассматривается стандартное использование функций изменения формы данных `melt` (из широкой в длинную) и `dcast` (из длинной в широкую) для класса *data.table*, а также **новые расширенные возможности** From 93a53056e9e862cc6af01ee9ce39c95c6cc91439 Mon Sep 17 00:00:00 2001 From: aitap Date: Tue, 4 Mar 2025 17:07:49 +0000 Subject: [PATCH 4/5] Replace `isFrame` with the new API `isDataFrame` (#6850) * Replace isFrame with the new API isDataFrame Since both the NOTE and the new entry point are in current R-devel, test for both R version and SVN revision to account for revisions that lack both the NOTE and the new entry point. Co-Authored-By: Tyson Barrett * Add a TODO --------- Co-authored-by: Tyson Barrett Co-authored-by: Michael Chirico --- src/data.table.h | 4 ++++ src/dogroups.c | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/src/data.table.h b/src/data.table.h index 10b444e0e..fd066c3b1 100644 --- a/src/data.table.h +++ b/src/data.table.h @@ -17,6 +17,10 @@ #if R_VERSION < R_Version(3, 4, 0) # define SET_GROWABLE_BIT(x) // #3292 #endif +// TODO: remove the `R_SVN_VERSION` check when R 4.5.0 is released (circa Apr. 2025) +#if R_VERSION < R_Version(4, 5, 0) || R_SVN_REVISION < 86702 +# define isDataFrame(x) isFrame(x) // #6180 +#endif #include #define SEXPPTR_RO(x) ((const SEXP *)DATAPTR_RO(x)) // to avoid overhead of looped STRING_ELT and VECTOR_ELT #include // for uint64_t rather than unsigned long long diff --git a/src/dogroups.c b/src/dogroups.c index 5fafa67ac..bb095c2c9 100644 --- a/src/dogroups.c +++ b/src/dogroups.c @@ -283,7 +283,7 @@ SEXP dogroups(SEXP dt, SEXP dtcols, SEXP groups, SEXP grpcols, SEXP jiscols, SEX for (int j=0; j Date: Tue, 4 Mar 2025 18:21:47 +0100 Subject: [PATCH 5/5] add committer emails to DESCRIPTION (#6817) * add toby email * mine too * Add Jan's email --------- Co-authored-by: Michael Chirico Co-authored-by: Jan Gorecki --- DESCRIPTION | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/DESCRIPTION b/DESCRIPTION index 688d2c433..da554f984 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -15,9 +15,9 @@ Authors@R: c( person("Tyson","Barrett", role=c("aut","cre"), email="t.barrett88@gmail.com", comment = c(ORCID="0000-0002-2137-1391")), person("Matt","Dowle", role="aut", email="mattjdowle@gmail.com"), person("Arun","Srinivasan", role="aut", email="asrini@pm.me"), - person("Jan","Gorecki", role="aut"), - person("Michael","Chirico", role="aut", comment = c(ORCID="0000-0003-0787-087X")), - person("Toby","Hocking", role="aut", comment = c(ORCID="0000-0002-3146-0865")), + person("Jan","Gorecki", role="aut", email="j.gorecki@wit.edu.pl"), + person("Michael","Chirico", role="aut", email="michaelchirico4@gmail.com", comment = c(ORCID="0000-0003-0787-087X")), + person("Toby","Hocking", role="aut", email="toby.hocking@r-project.org", comment = c(ORCID="0000-0002-3146-0865")), person("Benjamin","Schwendinger",role="aut", comment = c(ORCID="0000-0003-3315-8114")), person("Ivan", "Krylov", role="aut", email="ikrylov@disroot.org", comment = c(ORCID="0000-0002-0172-3812")), person("Pasha","Stetsenko", role="ctb"),