R 3.6.3 faster than R 4.2.2? - r

I am not sure wether this is the right place for this question, but I've upgraded my R from 3.6.3 to 4.2.2 and my experience has been that the 4.2.2 version is way slower than the older one in some cases. Is this really an issue with R 4.x compared to R 3.6.x or do I need to adjust anything on my setup?
I found this link regarding a problem similar to mine with R 4.0.2: https://github.com/rocker-org/rocker/issues/412
Sample code (runs on average twice as fast on 3.6.3 than on 4.2.2)
I know this could be a package implementation issue rather than an R version issue, but I had problems with other scripts that do not use any of the packages below
library(tictoc)
library(seasonal)
times <- c()
for(j in 1:100) {
print(j)
tic()
for(i in 1:20) {
try({ final(seas(ts(1:120 + runif(120), start = c(1990, 1), frequency = 12))) })
}
elapsed <- toc()
times <- c(elapsed, unname(elapsed$toc - elapsed$tic))
}
Other informations:
→ Everything ran on the same machine
Session Info for 3.6.3
R version 3.6.3 (2020-02-29)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows 10 x64 (build 19041)
Matrix products: default
locale:
[1] LC_COLLATE=Portuguese_Brazil.1252 LC_CTYPE=Portuguese_Brazil.1252 LC_MONETARY=Portuguese_Brazil.1252 LC_NUMERIC=C LC_TIME=Portuguese_Brazil.1252
attached base packages:
[1] stats graphics grDevices utils datasets methods base
other attached packages:
[1] seasonal_1.9.0 tictoc_1.0
loaded via a namespace (and not attached):
[1] x13binary_1.1.39-2 compiler_3.6.3 tools_3.6.3
Session Info for 4.2.2
R version 4.2.2 (2022-10-31 ucrt)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows 10 x64 (build 19041)
Matrix products: default
locale:
[1] LC_COLLATE=Portuguese_Brazil.utf8 LC_CTYPE=Portuguese_Brazil.utf8 LC_MONETARY=Portuguese_Brazil.utf8 LC_NUMERIC=C
[5] LC_TIME=Portuguese_Brazil.utf8
attached base packages:
[1] stats graphics grDevices utils datasets methods base
other attached packages:
[1] seasonal_1.9.0 tictoc_1.1
loaded via a namespace (and not attached):
[1] colorspace_2.1-0 scales_1.2.1 x13binary_1.1.57-3 compiler_4.2.2 R6_2.5.1 cli_3.6.0 tools_4.2.2 rstudioapi_0.14
[9] lifecycle_1.0.3 munsell_0.5.0 rlang_1.0.6

Related

R and RStudio are slow on macOS

I was waiting for R 4.1. and native Apple silicon support to dome some benchmarks against other platforms. The results on my MacBook Pro with the M1 chip look disturbing to me. Let's start with the Mac:
> sessionInfo()
R version 4.1.0 (2021-05-18)
Platform: aarch64-apple-darwin20 (64-bit)
Running under: macOS Big Sur 11.4
Matrix products: default
LAPACK: /Library/Frameworks/R.framework/Versions/4.1-arm64/Resources/lib/libRlapack.dylib
locale:
[1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8
attached base packages:
[1] stats graphics grDevices utils datasets methods base
loaded via a namespace (and not attached):
[1] compiler_4.1.0 tools_4.1.0
The results from the benchmark are:
> N <- 20000
> M <- 2000
> X <- matrix(rnorm(N*M),N)
> system.time(crossprod(X))
user system elapsed
49.954 0.109 50.056
Interestingly, the sessionInfo has different output in R Console but the results are the same:
> sessionInfo()
R version 4.1.0 (2021-05-18)
Platform: aarch64-apple-darwin20 (64-bit)
Running under: macOS Big Sur 11.4
Matrix products: default
BLAS: /Library/Frameworks/R.framework/Versions/4.1-arm64/Resources/lib/libRblas.dylib
LAPACK: /Library/Frameworks/R.framework/Versions/4.1-arm64/Resources/lib/libRlapack.dylib
locale:
[1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8
attached base packages:
[1] stats graphics grDevices utils datasets methods base
loaded via a namespace (and not attached):
[1] compiler_4.1.0
Clearly R uses the Acclerate framework's BLAS libraries, but the benchmarks are similar:
> system.time(crossprod(X))
user system elapsed
49.909 0.117 50.015
Under Windows using my Thinkpad E 580 it is a whole different story:
R version 4.0.2 (2020-06-22)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows 10 x64 (build 19042)
Matrix products: default
locale:
[1] LC_COLLATE=English_United States.1252
[2] LC_CTYPE=English_United States.1252
[3] LC_MONETARY=English_United States.1252
[4] LC_NUMERIC=C
[5] LC_TIME=English_United States.1252
attached base packages:
[1] stats graphics grDevices utils datasets methods
[7] base
other attached packages:
[1] microbenchmark_1.4-7 RevoUtils_11.0.2 RevoUtilsMath_11.0.0
loaded via a namespace (and not attached):
[1] compiler_4.0.2 tools_4.0.2 grid_4.0.2 lattice_0.20-41
The computations are much quicker:
> system.time(crossprod(X))
user system elapsed
2.60 0.03 0.70
Windows uses Microsoft R Open and that may explain the difference. On Ubuntu or Fedora, using OpenBlas on the same laptop, the results are similar to Windows. I don't know if this is to be expected. For me the macOS R is inexplicably slow.
I was wrong that in my case R uses the faster vecLib libraries. From the R for Mac OS FAQ:
Currently the default is to use the R BLAS: this is recommended for
precision
This is the case if one installs the regular R from CRAN. The solution is to change to the Apple’s Accelerate BLAS:
cd /Library/Frameworks/R.framework/Resources/lib
ln -sf /System/Library/Frameworks/Accelerate.framework/Frameworks/vecLib.framework/Versions/Current/libBLAS.dylib libRblas.dylib
as explained in many sources, for example here.
With changed BLAS the MacBook is much faster than the Thinkpad:
> system.time(crossprod(X))
user system elapsed
0.491 0.059 0.553
I guess I fooled myself because on Fedora the openblas is enabled by default and I was expecting the same. Also, one must read documentation.

Warning message after installing R

I have installed R many time in the last two decades. Today for the first time something went wrong.
After installing on a brand new laptop with windows 10 pro, I get this warning every time I open the program:
During startup - Warning message:
Setting LC_CTYPE= failed
I tried reading about this, but all I could find was MAC related, I have a lenovo thinkpad with windows 10.
Edit: Session Info
R version 3.5.1 (2018-07-02)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows >= 8 x64 (build 9200)
Matrix products: default
locale:
[1] C
attached base packages:
[1] stats graphics grDevices utils datasets methods base
other attached packages:
[1] sessioninfo_1.1.1
loaded via a namespace (and not attached):
[1] compiler_3.5.1 assertthat_0.2.0 cli_1.0.1 tools_3.5.1 withr_2.1.2
[6] rstudioapi_0.8 yaml_2.2.0 crayon_1.3.4

Graphics API version mismatch

I have a big problem
I update R to the latest version.
After updating, every time i try to plot something with whatsoever kind of graphic function( even with the basic plot) i get this error
Error: Graphics API version mismatch
these are my session info
R version 3.4.1 (2017-06-30)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows >= 8 x64 (build 9200)
locale:
[1] LC_COLLATE=Italian_Italy.1252
[2] LC_CTYPE=Italian_Italy.1252
[3] LC_MONETARY=Italian_Italy.1252
[4] LC_NUMERIC=C
[5] LC_TIME=Italian_Italy.1252
attached base packages:
[1] stats graphics grDevices utils datasets methods
[7] base
loaded via a namespace (and not attached):
[1] compiler_3.3.2 tools_3.3.2
Note: no visible binding for global variable 'x'
Note: no visible binding for global variable 'envir'
All packages installed are updated to the latest version available

utf8 conversion issue on windows using rmongodb

I am having issues receiving proper utf8 characters using rmongodb.
> sessionInfo()
R version 3.2.2 (2015-08-14)
Platform: i386-w64-mingw32/i386 (32-bit)
Running under: Windows 7 x64 (build 7601) Service Pack 1
locale:
[1] LC_COLLATE=German_Germany.1252 LC_CTYPE=German_Germany.1252 LC_MONETARY=German_Germany.1252
[4] LC_NUMERIC=C LC_TIME=German_Germany.1252
attached base packages:
[1] stats graphics grDevices utils datasets methods base
other attached packages:
[1] rmongodb_1.8.0
loaded via a namespace (and not attached):
[1] plyr_1.8.3 rsconnect_0.4.1.4 tools_3.2.2 rstudioapi_0.3.1 Rcpp_0.12.1 jsonlite_0.9.17
Using mongo shell I am getting:
"organization" : [
{
"name" : "Birkhäuser Verlag GmbH",
}
],
In RStudio:
[1] "WERK Birkhäuser Verlag GmbH"
To get the data in R, I am using:
mongo.find.all(mongo = mdb, ns = colname, limit = 10)
So the Umlaut is not handled properly.
Any help much appreciated!

How to read extra-ASCII characters in R?

I am reading input text file line by line with the following function:
lines_reader<-function(filename){
conn<-file(filename,open="r")
linn<-readLines(conn,encoding="UCS-2LE")
close(conn)
return(linn)
}
If I try to plot these lines in the R enviroment, letters with accent marks are treated not adequately appearing like "Ã" or "è" instead of "à" or "è".
How to cope with this? What encoding I should choose?
Here they are my session and local system info:
> sessionInfo()
R version 3.2.0 (2015-04-16)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows 8 x64 (build 9200)
locale:
[1] LC_COLLATE=Italian_Italy.1252 LC_CTYPE=Italian_Italy.1252
[3] LC_MONETARY=Italian_Italy.1252 LC_NUMERIC=C
[5] LC_TIME=Italian_Italy.1252
attached base packages:
[1] stats graphics grDevices utils datasets methods base
loaded via a namespace (and not attached):
[1] tools_3.2.0
> Sys.getlocale()
[1] "LC_COLLATE=Italian_Italy.1252;LC_CTYPE=Italian_Italy.1252;LC_MONETARY=Italian_Italy.1252;LC_NUMERIC=C;LC_TIME=Italian_Italy.1252"
How about changing the encoding that you are using:
lines_reader<-function(filename){
conn<-file(filename,open="r")
linn<-readLines(conn,encoding="UTF-8")
close(conn)
return(linn)
}

Resources