写在前面

我们有时候新安装R语言时,想要利用之前的安装好的包,比如我们安装了openR, 但是还想要之前安装的包, 就可以定义library, 这样就不用重头安装很多包了. 定义分为两种, 临时性的和永久性的, 推荐永久性的方法。包括windows系统和Linux系统,Mac系统的话原理应该是相通的。

还有一种需求,就是我们升级了包,比如R4.1升级到了R4.2,可以将library中的包复制一遍,命名为R4.2,然后指定它作为R的包存储位置,这样再运行一下下面代码,就会自动检查是否能用,如果可以在新版本中用,就会保留,不能使用就会升级,这是最节省劳动的做法。

下面代码,需要在路径设置好之后,在R中执行:

update.packages(checkBuilt=TRUE, ask=FALSE)

1 Linux系统解决方案

1.1 临时性的方法:

可以在R里面用如下命令

.libPaths("~/R/library")

上面的路径~/R/library就是R包的路径,如果你安装R包,它会存储在这个路径下。但是这个路径临时有效。不能永久修改。下面这种方法可以永久修改

1.2 , 永久修改方法:

1.2.1, 进入你的工作目录

cd ~

1.2.2, 进入R语言, 查看你的.libPath()

> .libPaths()
[1] "/home/dengfei/R/x86_64-pc-linux-gnu-library/3.5"
[2] "/home/dengfei/anaconda3/lib/R/library"

1.2.3, 退出R, 编辑一个新的文件 .Rprofile

注意, 这里的.Rprofile是文件名

查看文件名:

(base) [dengfei@localhost ~]$ ls .Rprofile 
.Rprofile

查看文件内容:

(base) [dengfei@localhost ~]$ cat .Rprofile 
.libPaths(c("/opt/microsoft/ropen/3.5.1/lib64/R/library","/home/dengfei/R/x86_64-pc-linux-gnu-library/3.5","/home/dengfei/anaconda3/lib/R/library"))

比如说, 你要将目录:"/opt/microsoft/ropen/3.5.1/lib64/R/library"放到里面, 这里将你默认lib的和新的lib放到文件中, 注意这里是多个, 所以用c()

.libPaths(c("/opt/microsoft/ropen/3.5.1/lib64/R/library","/home/dengfei/R/x86_64-pc-linux-gnu-library/3.5","/home/dengfei/anaconda3/lib/R/library"))

1.2.4, 再次进入R, 然后查看.libPath(), 发现已经成功

> .libPaths()
[1] "/opt/microsoft/ropen/3.5.1/lib64/R/library"     
[2] "/home/dengfei/R/x86_64-pc-linux-gnu-library/3.5"
[3] "/home/dengfei/anaconda3/lib/R/library"

2 Windows系统解决方案

如果你是由R4.1版本,升级到了R4.2版本,可以找到你的library,然后将文件4.1拷贝一份为4.2

r语言 路径中文 r语言怎么设置路径_r语言 路径中文


然后进入R语言:

> .libPaths()
[1] "C:/Users/xx/AppData/Local/R/win-library/4.2"
[2] "C:/Program Files/R/R-4.2.1/library"

可以看到,R4.2改变了library的目录,它不在文档下面了,需要修改一下,才可以。

2.1 临时修改

比如,我想把这个目录作为R的library目录:

C:\Users\xx\Documents\R\win-library\4.2

在R中,一个斜杠需要变为两个斜杠,所以设置的代码为:

.libPaths("C:\\Users\\xx\\Documents\\R\\win-library\\4.2")

下面代码可以看到,本来我是没有tidyverse的,我设置完.libPaths之后,就可以成功载入了。

> library(tidyverse)
Error in library(tidyverse) : 不存在叫‘tidyverse’这个名字的程辑包
> .libPaths("C:\\Users\\xx\\Documents\\R\\win-library\\4.2")
> library(tidyverse)
── Attaching packages ───────────────────────────────────── tidyverse 1.3.1 ──
✓ ggplot2 3.3.5     ✓ purrr   0.3.4
✓ tibble  3.1.6     ✓ dplyr   1.0.4
✓ tidyr   1.2.0     ✓ stringr 1.4.0
✓ readr   2.1.2     ✓ forcats 0.5.1
── Conflicts ──────────────────────────────────────── tidyverse_conflicts() ──
x dplyr::filter() masks stats::filter()
x dplyr::lag()    masks stats::lag()

当然,这是临时性的,如果我们重启R语言,再次载入,就发现报错了:

r语言 路径中文 r语言怎么设置路径_r语言 路径中文_02

2.2 永久性修改

2.2.1 查看R中的默认路径

进入R语言,然后运行getwd,查看路径的地址:

> getwd()
[1] "C:/Users/xx/Documents"

可以看到,我的R语言在我的文档中(Documents),进入这个文件夹,新建一个txt文件

2.2.2 新建txt文件

把之前默认的路径找到,比如我的是这两个

> .libPaths()
[1] "C:/Users/xx/AppData/Local/R/win-library/4.2"
[2] "C:/Program Files/R/R-4.2.1/library"

整理好内容:

C:/Users/xx/AppData/Local/R/win-library/4.2
C:/Program Files/R/R-4.2.1/library

新增加的是:

C:\\Users\\xx\\Documents\\R\\win-library\\4.2

把这三个路径放到txt文件中,用引号包裹。注意,这里的/\\是等价的,用哪一种都可以。

txt文件内容:

.libPaths(c(
	"C:/Users/xx/AppData/Local/R/win-library/4.2",
	"C:/Program Files/R/R-4.2.1/library",
	"C:\\Users\\xx\\Documents\\R\\win-library\\4.2"	
))

注意:

  • 每个路径,都要用引号包括
  • 前两个路径,后面有个逗号
  • .libPaht(c()),括号和代码不要省略
  • 需要根据自己的路径进行修改,上面是我的路径

2.2.3 将txt重命名

名称为:

.Rprofile

注意,这里txt后缀修改了,上面就是全名

修改时,会让你判断是否修改,点击Y

r语言 路径中文 r语言怎么设置路径_开发语言_03


修改后的文件是这个样子的:

r语言 路径中文 r语言怎么设置路径_r语言_04

2.2.4 重启进入Rstudio或者R语言

查看R的librayr路径:

> .libPaths()
[1] "C:/Users/xx/AppData/Local/R/win-library/4.2"
[2] "C:/Program Files/R/R-4.2.1/library"           
[3] "C:/Users/xx/Documents/R/win-library/4.2"

发现已经修改完成。

载入R包试一下:

r语言 路径中文 r语言怎么设置路径_r语言_05

完全没问题。

3. 升级R语言

这里,单纯的将R4.1的包copy了一份为R4.2,但是有些包可能需要升级,一行代码解决:

update.packages(checkBuilt=TRUE, ask=FALSE)

然后等待完成,就可以顺畅的使用了