From a58345a9510507cd4b8972805f04a8e9bce696c6 Mon Sep 17 00:00:00 2001 From: Aakriti Kushwaha Date: Thu, 1 Jan 2026 17:16:35 +0530 Subject: [PATCH 1/3] Doc: Clarify paste0 efficiency and substr zero-length behavior --- src/library/base/man/paste.Rd | 3 ++- src/library/base/man/substr.Rd | 4 ++++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/src/library/base/man/paste.Rd b/src/library/base/man/paste.Rd index 8ff68f6c80c..31fc69af375 100644 --- a/src/library/base/man/paste.Rd +++ b/src/library/base/man/paste.Rd @@ -46,7 +46,8 @@ paste0(\dots, collapse = NULL, recycle0 = FALSE) desirable, e.g.\sspace{}in \code{paste("the value of p is ", p)}. \code{paste0(\dots, collapse)} is equivalent to - \code{paste(\dots, sep = "", collapse)}, slightly more efficiently. + \code{paste(\dots, sep = "", collapse)}, slightly more efficiently + as it avoids handling a separator. If a value is specified for \code{collapse}, the values in the result are then concatenated into a single string, with the elements being diff --git a/src/library/base/man/substr.Rd b/src/library/base/man/substr.Rd index 973b19efb97..82498db6cfb 100644 --- a/src/library/base/man/substr.Rd +++ b/src/library/base/man/substr.Rd @@ -98,6 +98,10 @@ substr("abcdef", 2, 4) substring("abcdef", 1:6, 1:6) ## strsplit() is more efficient ... +## Demonstrating zero-length extraction behavior +substr(character(0), 1, 2) # returns character(0) +substring(c("abc", ""), 2) # returns "bc" and "" + substr(rep("abcdef", 4), 1:4, 4:5) x <- c("asfef", "qwerty", "yuiop[", "b", "stuff.blah.yech") substr(x, 2, 5) From b575051278a3936009096a29397167ff19d5a230 Mon Sep 17 00:00:00 2001 From: Aakriti Kushwaha Date: Tue, 6 Jan 2026 17:55:11 +0530 Subject: [PATCH 2/3] Clarify examples: recycle0 behavior and zero-length vs empty strings --- src/library/base/man/paste.Rd | 7 +++++++ src/library/base/man/substr.Rd | 2 +- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/src/library/base/man/paste.Rd b/src/library/base/man/paste.Rd index 31fc69af375..7f2890b86ff 100644 --- a/src/library/base/man/paste.Rd +++ b/src/library/base/man/paste.Rd @@ -140,5 +140,12 @@ paste( collapse = "|") paste( collapse = "|", recycle0 = TRUE) paste({}, collapse = "|") paste({}, collapse = "|", recycle0 = TRUE) + +## Demonstrating recycle0 behavior with collapse argument +vals_empty <- character(0) +vals_nonempty <- c("a", "b") + +paste(vals_empty, vals_nonempty, collapse = ",") # -> "a,b" (empty vector ignored) +paste(vals_empty, vals_nonempty, collapse = ",", recycle0 = TRUE) # -> "" (length 1, empty) } \keyword{character} diff --git a/src/library/base/man/substr.Rd b/src/library/base/man/substr.Rd index 82498db6cfb..f332e6c269f 100644 --- a/src/library/base/man/substr.Rd +++ b/src/library/base/man/substr.Rd @@ -98,7 +98,7 @@ substr("abcdef", 2, 4) substring("abcdef", 1:6, 1:6) ## strsplit() is more efficient ... -## Demonstrating zero-length extraction behavior +## Extraction behavior from zero-length strings and empty strings substr(character(0), 1, 2) # returns character(0) substring(c("abc", ""), 2) # returns "bc" and "" From e169af0ffc38002f2a1c5dec5c0355e80133f1ea Mon Sep 17 00:00:00 2001 From: Aakriti Kushwaha Date: Tue, 6 Jan 2026 19:49:25 +0530 Subject: [PATCH 3/3] Remove redundant recycle0/collapse examples from paste.Rd --- src/library/base/man/paste.Rd | 7 ------- 1 file changed, 7 deletions(-) diff --git a/src/library/base/man/paste.Rd b/src/library/base/man/paste.Rd index 7f2890b86ff..31fc69af375 100644 --- a/src/library/base/man/paste.Rd +++ b/src/library/base/man/paste.Rd @@ -140,12 +140,5 @@ paste( collapse = "|") paste( collapse = "|", recycle0 = TRUE) paste({}, collapse = "|") paste({}, collapse = "|", recycle0 = TRUE) - -## Demonstrating recycle0 behavior with collapse argument -vals_empty <- character(0) -vals_nonempty <- c("a", "b") - -paste(vals_empty, vals_nonempty, collapse = ",") # -> "a,b" (empty vector ignored) -paste(vals_empty, vals_nonempty, collapse = ",", recycle0 = TRUE) # -> "" (length 1, empty) } \keyword{character}