[R] Bug with writeClipboard in {utils}

Rui Barradas
2024-06-19T17:26:16Z

?s 11:12 de 18/06/2024, Barthelemy Tanguy via R-help
escreveu:
> Hello,
>
> I'm encountering what seems to be a bug when using the
`writeClipboard()` function in the R {utils} package.
> When I try to copy text to the clipboard, I notice that I get extra
characters when I try to paste it (by hand with CTRL+V or with the
`readClipboard()` function from R packages {utils}).
>
> Here's my example:
>
> ``` r
> utils::writeClipboard("plot(AirPassengers)")
> for (k in 1:10) {
>      print(utils::readClipboard())
> }
> #> [1] "plot(AirPassengers)" "??"
> #> [1] "plot(AirPassengers)" "\u0a00"
> #> [1] "plot(AirPassengers)" "\xed\xb0\x80?"
> #> [1] "plot(AirPassengers)"
> #> [1] "plot(AirPassengers)"
> #> [1] "plot(AirPassengers)"
> #> [1] "plot(AirPassengers)"
> #> [1] "plot(AirPassengers)"
> #> [1] "plot(AirPassengers)" "?"
> #> [1] "plot(AirPassengers)"
> Message d'avis :
> Dans utils::readClipboard() : unpaired surrogate Unicode point dc00
> ```
>
> So I don't always get the same result.
> I opened a problem in the {clipr} GitHub repository before realizing
it's a {tools} problem: https://github.com/mdlincoln/clipr/issues/68
>
> Is this a bug or something I haven't configured properly?
>
>
> Thank you very much
>
>
> Tanguy BARTHELEMY
>
>
> 	[[alternative HTML version deleted]]
>
> ______________________________________________
> R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide
http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.
Hello,

I have reproduced part of the behavior in the OP but it will depend on
the GUI or command line used.

With Rscript or with R I haven't found any errors.
With Rgui or with RStudio, yes, the output was not the expected output.

All code run in R 4.4.0 on Windows 11.

The script rscript.R is


utils::capture.output({
utils::writeClipboard("plot(AirPassengers)")
for (k in 1:10) {
   print(utils::readClipboard())
}
sessionInfo()
}, file = "rhelp.txt")


---

Here are the results I got.

1) Command:

Rscript rscript.R

Output:

[1] "plot(AirPassengers)"
[1] "plot(AirPassengers)"
[1] "plot(AirPassengers)"
[1] "plot(AirPassengers)"
[1] "plot(AirPassengers)"
[1] "plot(AirPassengers)"
[1] "plot(AirPassengers)"
[1] "plot(AirPassengers)"
[1] "plot(AirPassengers)"
[1] "plot(AirPassengers)"
R version 4.4.0 (2024-04-24 ucrt)
Platform: x86_64-w64-mingw32/x64
Running under: Windows 11 x64 (build 22631)

Matrix products: default


locale:
[1] LC_COLLATE=Portuguese_Portugal.utf8
LC_CTYPE=Portuguese_Portugal.utf8
[3] LC_MONETARY=Portuguese_Portugal.utf8 LC_NUMERIC=C

[5] LC_TIME=Portuguese_Portugal.utf8

time zone: Europe/Lisbon
tzcode source: internal

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base

loaded via a namespace (and not attached):
[1] compiler_4.4.0

---

2) Command:
R -q -f rscript.R

Output:

 > utils::writeClipboard("plot(AirPassengers)")
 > for (k in 1:10) {
+     print(utils::readClipboard())
+ }
[1] "plot(AirPassengers)"
[1] "plot(AirPassengers)" "??\005"
[1] "plot(AirPassengers)"
[1] "plot(AirPassengers)"
[1] "plot(AirPassengers)"
[1] "plot(AirPassengers)"
[1] "plot(AirPassengers)"
[1] "plot(AirPassengers)"
[1] "plot(AirPassengers)"
[1] "plot(AirPassengers)"
 > sessionInfo()
R version 4.4.0 (2024-04-24 ucrt)
Platform: x86_64-w64-mingw32/x64
Running under: Windows 11 x64 (build 22631)

Matrix products: default


locale:
[1] LC_COLLATE=Portuguese_Portugal.utf8
LC_CTYPE=Portuguese_Portugal.utf8
[3] LC_MONETARY=Portuguese_Portugal.utf8 LC_NUMERIC=C

[5] LC_TIME=Portuguese_Portugal.utf8

time zone: Europe/Lisbon
tzcode source: internal

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base

loaded via a namespace (and not attached):
[1] compiler_4.4.0
 >

---

3) GUI: RStudio
Output:

[1] "plot(AirPassengers)"
[1] "plot(AirPassengers)" "?????e"
[1] "plot(AirPassengers)"
[1] "plot(AirPassengers)" "??"
[1] "plot(AirPassengers)" "?????e"
[1] "plot(AirPassengers)"
[1] "plot(AirPassengers)"
[2] "?????eX???????????????????????"
[1] "plot(AirPassengers)" "??"
[1] "plot(AirPassengers)"
[1] "plot(AirPassengers)"
R version 4.4.0 (2024-04-24 ucrt)
Platform: x86_64-w64-mingw32/x64
Running under: Windows 11 x64 (build 22631)

Matrix products: default


locale:
[1] LC_COLLATE=Portuguese_Portugal.utf8
LC_CTYPE=Portuguese_Portugal.utf8
[3] LC_MONETARY=Portuguese_Portugal.utf8 LC_NUMERIC=C

[5] LC_TIME=Portuguese_Portugal.utf8

time zone: Europe/Lisbon
tzcode source: internal

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base

loaded via a namespace (and not attached):
  [1] gtable_0.3.4         tensorA_0.36.2.1     ggplot2_3.5.0
  [4] QuickJSR_1.1.3       processx_3.8.3       inline_0.3.19
  [7] lattice_0.22-5       tzdb_0.4.0           callr_3.7.5
[10] vctrs_0.6.5          tools_4.4.0          ps_1.7.6
[13] generics_0.1.3       stats4_4.4.0         curl_5.2.1
[16] parallel_4.4.0       sandwich_3.1-0       tibble_3.2.1
[19] fansi_1.0.6          chron_2.3-61         pkgconfig_2.0.3
[22] brms_2.21.0          Matrix_1.6-5         checkmate_2.3.1
[25] distributional_0.4.0 RcppParallel_5.1.7   lifecycle_1.0.4
[28] compiler_4.4.0       stringr_1.5.1        Brobdingnag_1.2-9
[31] munsell_0.5.0        codetools_0.2-19     bayesplot_1.11.1
[34] pillar_1.9.0         crayon_1.5.2         MASS_7.3-60.0.1
[37] StanHeaders_2.32.6   bridgesampling_1.1-2 abind_1.4-5
[40] multcomp_1.4-25      nlme_3.1-164         posterior_1.5.0
[43] rstan_2.32.5         tidyselect_1.2.0     mvtnorm_1.2-3
[46] stringi_1.7.12       dplyr_1.1.4          splines_4.4.0
[49] grid_4.4.0           colorspace_2.1-0     cli_3.6.2
[52] magrittr_2.0.3       loo_2.6.0            survival_3.5-8
[55] pkgbuild_1.4.2       utf8_1.2.4           TH.data_1.1-2
[58] readr_2.1.4          prettyunits_1.2.0    scales_1.3.0
[61] backports_1.4.1      estimability_1.5     httr_1.4.7
[64] matrixStats_1.0.0    emmeans_1.10.0       gridExtra_2.3
[67] hms_1.1.3            zoo_1.8-12           coda_0.19-4.1
[70] V8_4.4.2             rstantools_2.3.1.1   rlang_1.1.3
[73] Rcpp_1.0.12          xtable_1.8-4         glue_1.7.0
[76] ppcor_1.1            rstudioapi_0.15.0    jsonlite_1.8.8
[79] R6_2.5.1

---

4) GUI: Rgui
Output:

[1] "plot(AirPassengers)" "??\005???"
[1] "plot(AirPassengers)"
[1] "plot(AirPassengers)"
[1] "plot(AirPassengers)"
[1] "plot(AirPassengers)"
[1] "plot(AirPassengers)"
[1] "plot(AirPassengers)"
[1] "plot(AirPassengers)"
[1] "plot(AirPassengers)"
[1] "plot(AirPassengers)"
R version 4.4.0 (2024-04-24 ucrt)
Platform: x86_64-w64-mingw32/x64
Running under: Windows 11 x64 (build 22631)

Matrix products: default


locale:
[1] LC_COLLATE=Portuguese_Portugal.utf8
LC_CTYPE=Portuguese_Portugal.utf8
[3] LC_MONETARY=Portuguese_Portugal.utf8 LC_NUMERIC=C

[5] LC_TIME=Portuguese_Portugal.utf8

time zone: Europe/Lisbon
tzcode source: internal

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base

loaded via a namespace (and not attached):
[1] compiler_4.4.0



Hope this helps,

Rui Barradas




--
Este e-mail foi analisado pelo software antiv?rus AVG para verificar a presen?a
de v?rus.