这里写自定义目录标题
软件清单
网址更新日期:2024-01-18
安装路径
- Program Files
- R
- R-4.0.x
- R-4.3.x
- RStudio
- Rtools
- rtools40
- rtools43
RSTUDIO环境配置及切换
选择环境
Tools > Global Options > General > Change > Choose a specific version of R:
配置Rtools环境
需要在Windows的环境量和系统变量添加对应路径
# 选择R4.0环境
writeLines('PATH="${RTOOLS40_HOME}\\usr\\bin;${PATH}"', con = "~/.Renviron")
# 选择R4.3环境
writeLines('PATH="${RTOOLS43_HOME}\\usr\\bin;${PATH}"', con = "~/.Renviron")
安装
install.packages("Rcpp", type = "win.binary") # 安装,新增变量则强行安装
library(Rcpp) # 加载
detach("package:Rcpp",unload = T) # 解除加载
remove.packages("Rcpp") # 卸载
无报错则安装成功!
FAQ
# 从R3.6.2更新成R4新版本(4.0.5)的R、并重新安装Rstudio后
# 调用R包会遇到package XXX was installed before R 4.0.0: please re-install it的问题
# 如:
# Error: package or namespace load failed for ‘Seurat’:
# package ‘rpart’ was installed by an R version with different internals; it needs to be reinstalled for use with this R version
# Error: package or namespace load failed for ‘DESeq2’:
# package ‘survival’ was installed by an R version with different internals; it needs to be reinstalled for use with this R version
# 在rstudio右侧选项卡点击packages栏,点击加载system library其中一个包
> library(base64enc, lib.loc = "/usr/local/lib/R/site-library")
Error: package or namespace load failed for ‘base64enc’:
package ‘base64enc’ was installed before R 4.0.0: please re-install it
# 使用如下代码重新安装后可以正常调用
install.packages("base64enc")
所以解决问题的思路是:重新安装所有会有问题的包
# 检查包库路径,发现system路径有两个
.libPaths()
# "/home/commonuser/R" "/usr/local/lib/R/site-library" "/usr/local/lib/R/library"
# 分别查看两个system library里的旧包名称
old_packages <- installed.packages(lib.loc = "/usr/local/lib/R/site-library")
old_packages2 <- installed.packages(lib.loc = "/usr/local/lib/R/library")
# 对比名单发现下面这个目录里面的包都是4.0.5的,可以直接使用,只有上面这个library里的包需要重新安装
old_packages <- as.data.frame(old_packages)
# unlist () 函数用于将列表转换为向量
list.of.packages <- unlist(old_packages$Package)
remove.packages(installed.packages(priority = "NA")[,1], lib = "/usr/local/lib/R/site-library")
# 删除旧R包,删不掉,不给删的,下面这句是没用的
# 思路是使用install安装好这些需要替换版本的包后,直接在linux中利用管理员权限把旧包删除
if(length(list.of.packages)) install.packages(list.of.packages)
# 安装完成,在linux系统中把原目录site-library改名为3.6.2-site-library(留备份的删除),然后重建同名空目录以防万一
sudo mv site-library 3.6.2-site-library
sudo mkdir site-library
# 在这之后的所有用户要安装这些包,无法再通过以上步骤获取名单,可以去改名后的备份目录获得名单
old_packages <- installed.packages(lib.loc = "/usr/local/lib/R/3.6.2-site-library")
old_packages <- as.data.frame(old_packages)
list.of.packages <- unlist(old_packages$Package)
if(length(list.of.packages)) install.packages(list.of.packages)