R升级版本

起因:在R中安装包总是报错:
Warning : 说是缺少Rtools,也打不开下载网址。
下载了Rtools但是这是个新软件不是包,安装后仍然不知道怎么用。

于是想更新R版本

法一:在R GUI中通过包升级。但是可能会安装到C盘,建议用法二。

install.packages("installr",destdir=)  # 安装升级所用的包

library(installr)    # 加载installr包
check.for.updates.R()  # 检查版本
installr()             # 升级

安装过程会有一系列询问框弹出,询问诸如是否迁移旧R中的包,是否更新包等。
安装完成后,删除旧版本的R。
注意:其实安装installr包后,会在RGui界面添加一个installr的菜单,进行菜单操作来升级。

法二:重新从官网下载R并安装

  1. 找到国内镜像下载并安装。
  2. Rstudio可以不更新,允许电脑中存在多个R版本。在Rstudio的全局选项中设置一下使用哪个R版本即可。注意退出重启程序才生效。
    在这里插入图片描述
    change选项:
    在这里插入图片描述
  3. 原来的包不复存在,要重新安装。
    首先,打开老版本的R GUI,查看原来版本中已有的包,将包名写入txt文件。
    然后,在新版本驱动的Rstudio中,查看新版本已有的包。
    将两个包的集合做差集,即是老版本中有而新版本中没有需要安装的包。
    最后,依次安装即可。

老版本中:

have <- .packages(all.available=T)   # 仅查看已安装的包名,返回字符串向量
# 将其写入文件
cat(have,file="D:\\Softwares\\R\\installed_pkgs.txt",sep='\n')  

新版本中:

have <- .packages(all.available=T)  # 新版本中已有的包
# 读入老版本的包,变为字符串向量
pre_have <- as.vector(t(read.table("D:\\Softwares\\R\\installed_pkgs.txt")))  
# 集合运算 差集 A-B setdiff(A,B)
new <- setdiff(pre_have,have)  # 将两个集合进行差集运算
# 定义安装函数
Ins_pkg <- function(name){
  install.packages(name,destdir = "D:\\Softwares\\R\\R-4.0.0\\packages")  # 安装包
}
# 对差集中每个包调用该安装函数
sapply(new, Ins_pkg)

最后,回到开头的那个问题,安装包总是报错,怎么解决的呢?
更换使用的镜像就好了,从清华镜像换到上海镜像,并不需要更新R。
Anyway,有新版本还是建议使用新版本~

注1:集合运算

A和B交集:union(A,B)
A和B并集:intersect(A,B)
差集A-B:setdiff(A,B)
差集B-A:setdiff(B,A)
A是否属于B:all(A %in% B)
B是否属于A:all(B %in% A)
A和B是否相同:setequal(A,B)
某个元素a是否属于A:is.element(a,A) 或 a %in% A

注2:查看R的包

  1. library() 在新窗口中查看已经安装的包的列表。
  2. installed.packages() 在控制台查看各个包的安装路径、版本号等信息。
  3. .packages(all.available=T) 在控制台中显示已安装包的名字,只显示包的名字。
  4. help(package=“包的名称”) 在新窗口中查看包内的函数及说明。
  5. getOption(“defaultPackages”) 查看默认加载的包,忽略基本的包。
  6. (.packages()) 查看当前已经加载过的包。
  7. (.packages(all.availabel=TRUE)) 查看所有可用的包。
  8. detach(package:包的名称) 卸载包。主要是为了避免某些包中的函数名称相同,造成冲突,注意与library()的参数不同。

注3:调用R包

library() 和 require() 都可以。区别在于:
library() 只是加载包,加载成功不显示任何信息;加载失败才会显示错误提示。
require() 会有返回值,如果加载成功,返回值为TRUE,显示加载的包的名称;如果加载失败,返回值为FALSE,显示警告提示。
library() 加载速度快,日常操作更常用。 require() 有返回值,更多用于编程。

注4:在文章中引用包

citation(package = “ggplot2”)
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值