R的安装及多版本控制

软件清单

网址更新日期: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)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值