R语言基础

2023-11-18


专注系列化高质量的R语言教程

推文索引 | 联系小编 | 付费合集


本篇总结一些关于工具包的问题,所指的“工具包”对应的英文原文是package(s)。本篇目录如下:

  • 1 工具包简介

  • 2 安装工具包

    • 2.1 CRAN

    • 2.2 GitHub

    • 2.3 离线压缩包

  • 3 加载工具包

  • 4 更新工具包

  • 5 删除工具包

1 工具包简介

在以前的推文里,学堂君经常把R中的工具包分为基础包和拓展包。基础包即basemethodsdatasetsutilsgrDevicesgraphicsstats,它们可以实现基本的数据处理、可视化和统计建模功能。基础包默认伴随R程序启动而自动加载,无需安装也无需加载。

预装包是R程序在安装时自带的工具包,它包括所有基础包以及小部分拓展包,比如用于生存分析的survival工具包。除基础包以外的预装包不会随程序启动而自动加载;除预装包之外的拓展包,需要用户自己安装并加载。

一些工具包可能会借助其他工具包的功能,这些工具包就是它的依赖包。在安装工具包之前,必须先安装它的依赖包;在加载工具包之前,必须先加载它的依赖包。因此工具包之间的依赖性只能是单向的。预装包因为会先于普通拓展包而安装,因此在功能上不可能依赖后者,而只能依赖于更底层的基础包,帮助文档也只能使用R语言的基础语法书写。

2 安装工具包

常见的安装渠道有三种:CRAN、GitHub和离线压缩文件。

2.1 CRAN

CRAN的全称是The Comprehensive R Archive Network,官方网址[1]:https://cran.r-project.org/。

CRAN官网上有许多R语言的学习资源,读者可以自行探索,其中按名称顺序列举工具包的网址如下[2]

https://cran.r-project.org/web/packages/available_packages_by_name.html

CRAN官网上列举的工具包可以使用基础包utils中的install.packages()函数安装:

## 安装单个工具包
install.packages("tidyverse") 
## 安装多个工具包
install.packages(c("dplyr", "ggplot2"))

若用户未安装依赖包,该函数会自动先安装依赖包。

CRAN上的工具包都需要经过审核,因此具有较强的可信度,但要弱于基础包和预装包,某些工具包也可能存在问题(就有读者遇到过这种情况,给作者写信确认了此事,最后从GitHub上安装修复过的版本),读者在使用时应保持审慎态度。

在CRAN的网页上,所有的工具包都有一个标准格式的参考手册(Reference manual),不过该手册可读性并不强,部分工具包的作者会提供可读性更强的帮助文档(Vignettes)。

e9aa6bd63bfc7940d253e6e20a2bc888.png

除CRAN网站外,一些工具包还会有自己的网址(URL),为用户提供更丰富的学习资料和资讯。在RStudio的界面上,点击下图红框的按钮可以直接跳转工具包的网站(CRAN网站或URL)。

1cd64431e481445b60fe10c732a92564.png

在上图中,可以看到基础包并没有跳转网站的按钮,这是因为CRAN并没有列举基础包。但在如下网站中有R发展核心小组(R Development Core Team)编写的基础手册:

  • The R Manuals[3]:https://cran.r-project.org/manuals.html

  • An Introduction to R[4]:https://cran.r-project.org/doc/manuals/r-release/R-intro.pdf

2.2 GitHub

许多作者在申请把工具包添加到CRAN网站前,或更新版本前会先把它放到自己的GitHub账号上,因此一些工具包或工具包的最新版本只存在GitHub上,无法通过install.packages()函数安装。

当用户在使用install.packages()函数安装工具包时收到如下警告时,可考虑从GitHub上安装:

Warning in install.packages : package ‘XXX’ is not available for this version of R

首先需要通过在浏览器中搜索找到工具包所在GitHub的网址,然后使用devtools工具包(该包可通过CRAN方式安装)中的install_github()函数进行安装。

例如,albersusa工具包的GitHub网址是https://github.com/hrbrmstr/albersusa,安装方法如下:

library(devtools)
install_github("hrbrmstr/albersusa")

2.3 离线压缩包

如果用户在本地存有工具包的压缩包或自己编写工具包也会生成一个压缩包,可在离线情况下手动安装工具包。CRAN网站上也提供了压缩包的下载地址:

e0a6b402d2637f9072f67aff746d50d3.png

安装步骤如下。

单击“Install”按钮:

b55faaa416430bd3b1552a7aff164d32.png

在打开的界面中,“Install from”选择如下选项,然后通过“Browse”上传压缩包,最后点击右下角的“Install”按钮。

0e6801ed103f27c1b7b3e85565d78b4e.png

3 加载工具包

除基础包外,要想使用工具包的功能必须先使用base工具包中的library()函数进行加载:

library(dplyr)
library(ggplot2)

如果两个工具包存在面向相同类型对象使用的同名函数,先加载的工具包的该函数会被后加载的工具包所覆盖。这一点在推文环境Environment(上)1.4节中已有解释。

library()函数外,还可使用base工具包中的require()函数加载工具包。该函数一般在自定义函数或编写工具包时使用。

require(ggplot2)

function() {
  require(ggplot2)
}

用户也可以设置随程序启动自动加载的工具包清单,但不推荐,因为它很可能会导致代码在另一台设备上运行出错,在此不作介绍。

4 更新工具包

更新工具包的原理就是重新安装工具包。

用户也可以通过点击如下图中的“Update”按钮选择要更新的工具包。

a9c59c78d5708ac2d7554fdb5d961da9.png

如果更新失败,往往会提示无法删除已安装的版本(R-4.0以上版本会遇到这种情况),解决方法见下节“删除工具包”。

5 删除工具包

删除工具包的方法也很简单:找到工具包在本地的安装位置,删除对应的文件夹即可。

使用.libPaths()函数(不设置参数)可以查看工具包的安装路径:

.libPaths()
## [1] "C:/Users/DRAGON/AppData/Local/R/win-library/4.2"
## [2] "D:/R-4.2.1/library"

上面两个文件路径一个在C盘,一个在D盘,默认安装位置为前者。用户若不想占用C盘空间,可直接将前者中的文件夹剪切到后者中去,这不影响工具包的使用。

如下图,若用户想删除ggplot2工具包,直接删除红框中的文件夹即可。

ac48f942b3386cc15f37e1c594ed0f51.png

对于更新失败的工具包,删除工具包后再重新安装即可。

参考资料

[1]

CRAN官网: https://cran.r-project.org/

[2]

CRAN工具包清单: https://cran.r-project.org/web/packages/available_packages_by_name.html

[3]

The R Manuals: https://cran.r-project.org/manuals.html

[4]

An Introduction to R: https://cran.r-project.org/doc/manuals/r-release/R-intro.pdf

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

R语言基础 的相关文章

  • 使用 AWS Java SDK 为现有 S3 对象设置 Expires 标头

    我正在更新 Amazon S3 存储桶中的现有对象以设置一些元数据 我想设置 HTTPExpires每个对象的标头以更好地处理 HTTP 1 0 客户端 我们正在使用AWS Java SDK http aws amazon com sdkf
  • Java直接内存:在自定义类中使用sun.misc.Cleaner

    在 Java 中 NIO 直接缓冲区分配的内存通过以下方式释放 sun misc Cleaner实例 一些比对象终结更有效的特殊幻像引用 这种清洁器机制是否仅针对直接缓冲区子类硬编码在 JVM 中 或者是否也可以在自定义组件中使用清洁器 例
  • 使用 PHP 中的 GD 库在图像上绘图

    我创建了一个代码来生成随机图案图像 它创建一个具有给定宽度和高度的图像 并用 40x40 像素的小矩形填充它 这是我的代码
  • 使用 Flyway 和 Hibernate 的 hbm2ddl 在应用程序的生命周期中管理数据库模式

    我正在开发 Spring Hibernate MySql 应用程序 该应用程序尚未投入生产 我目前使用 Hibernatehbm2ddl该功能对于管理域上的更改非常方便 我也打算用Flyway用于数据库迁移 在未来的某个时候 该应用程序将首
  • Seaborn 中没有线性拟合的散点图

    我想知道是否有办法关闭seaborn中的线性拟合lmplot或者是否有一个等效函数可以生成散点图 当然 我也可以使用 matplotlib 但是 我发现 seaborn 中的语法和美学非常吸引人 例如 我想绘制以下情节 import sea
  • 当单元格内的 JComboBox 中有 ItemEvent 时,如何获取 CellRow

    我有一个 JTable 其中有一列包含 JComboBox 我有一个附加到 JComboBox 的 ItemListener 它会根据任何更改进行操作 但是 ItemListener 没有获取更改的 ComboBox 所在行的方法 当组合框
  • 如何在matplotlib中调整x轴

    I have a graph like this x轴上的数据表示小时 所以我希望x轴设置为0 24 48 72 而不是现在的值 很难看到 0 100 之间的数据 fig1 plt figure ax fig1 add subplot 11
  • 如何测试 spring-security-oauth2 资源服务器安全性?

    随着 Spring Security 4 的发布改进了对测试的支持 http docs spring io spring security site docs 4 0 x reference htmlsingle test我想更新我当前的
  • 点击 %40 变为 %2540

    当单击包含 符号的链接时 该网址给我 40 这就是我想要的 但是一旦我点击它 一秒钟后它就在我点击后变成了 2540 单击是在电子邮件内 然后定向到网站 其中 40 更改为 2540 我怎样才能让它停止变化 它现在得到这样的参数 email
  • android Accessibility-service 突然停止触发事件

    我有一个 AccessibilityService 工作正常 但由于开发过程中的某些原因它停止工作 我似乎找不到这个原因 请看一下我的代码并告诉我为什么它不起作用 public class MyServicee extends Access
  • 休眠以持久保存日期

    有没有办法告诉 Hibernate java util Date 应该持久保存 我需要这个来解决 MySQL 中缺少的毫秒分辨率问题 您能想到这种方法有什么缺点吗 您可以自己创建字段long 或者使用自定义的UserType 实施后User
  • if/else 简写来定义变量

    我很难理解 if else 的 php 简写是如何描述的here https stackoverflow com questions 20233207 php if shorthand and echo in one line possib
  • 无需访问 Internet 即可部署 Django 的简单方法?

    我拥有的是使用 Django 开发的 Intranet 站点的开发版本以及放置在 virtualenv 中的一些外部库 它运行良好 我可以在任何具有互联网连接的计算机上使用相同的参数 使用 pip 轻松设置 virtualenv 但是 不幸
  • 没有名为“turtle”的模块

    我正在学习并尝试用Python3制作贪吃蛇游戏 我正在进口海龟 我正在使用 Linux mint 19 PyCharm python37 python3 tk Traceback most recent call last File hom
  • 使用 pandas 单元格中列表的长度选择行[重复]

    这个问题在这里已经有答案了 我有一张表 df a b c 1 x y x 2 x z c d 3 x t e f g 只是想知道如何使用 c 列的长度选择行 such as df loc len df c gt 1 我知道这是不对的 正确的
  • 为boost python编译的.so找不到模块

    我正在尝试将 C 代码包装到 python 中 只需一个类即可导出两个函数 我编译为map so 当我尝试时import map得到像噪音一样的错误 Traceback most recent call last File
  • 中断连接套接字

    我有一个 GUI 其中包含要连接的服务器列表 如果用户单击服务器 则会连接到该服务器 如果用户单击第二个服务器 它将断开第一个服务器的连接并连接到第二个服务器 每个新连接都在一个新线程中运行 以便程序可以执行其他任务 但是 如果用户在第一个
  • java8 Collectors.toMap() 限制?

    我正在尝试使用java8Collectors toMap on a Stream of ZipEntry 这可能不是最好的想法 因为在处理过程中可能会发生异常 但我想这应该是可能的 我现在收到一个我不明白的编译错误 我猜是类型推理引擎 这是
  • Swagger/Openapi-Annotations:如何使用 $ref 生成 allOf?

    我正在生成 Rest 端点 包括添加OpenAPI Swagger对生成的代码进行注释 虽然它对于基本类型运行得很好 但我在自定义类方面遇到了一些问题 现在我有很多自定义类的重复架构条目 使用 Schema 实现 MyClass class
  • 我可以让 swagger-php 在查询字符串上使用数组吗?

    我使用 Swagger php 当我定义查询字符串上的参数时 它可以是一个数组 但据我所知 它不支持这种查询字符串 https api domain tld v1 objects q 1 q 5 q 12 我相信这会被设定in the co

随机推荐

  • 安装配置nfs服务

    NFS的功能 让不同操作系统之间可以互传文件 Server端 Server端可以关闭防火墙 或放行nfs服务 systemctl stop firewalld 临时关闭防火墙 systemctl disable firewalld 开机自动
  • Spring Boot中yml文件和properties文件的区别?

    Spring Boot中application properties和application yml 1 在properties文件中是以 进行分割的 在yml中是用 进行分割 2 yml文件拥有天然的树状图 看得更舒服 3 yml是支持中
  • protobuf-2.6.1下载和安装

    下载地址 https github com protocolbuffers protobuf archive refs tags v2 6 1 zip autogen sh configure make make check sudo ma
  • 使用wireshark观察SSL/TLS握手过程--双向认证/单向认证

    SSL TLS握手过程可以分成两种类型 1 SSL TLS 双向认证 就是双方都会互相认证 也就是两者之间将会交换证书 2 SSL TLS 单向认证 客户端会认证服务器端身份 而服务器端不会去对客户端身份进行验证 我们知道 握手过程实际上就
  • Linux面试题

    文章目录 Linux 概述 什么是Linux Unix和Linux有什么区别 什么是 Linux 内核 Linux的基本组件是什么 Linux 的体系结构 BASH和DOS之间的基本区别是什么 Linux 开机启动过程 Linux系统缺省的
  • 存储器3-DDR SDRAM双倍速率同步动态存储器

    1 信号电平 采用STTL 2电平 2 5V 标准 VIH AC Vref 0 31 VIH DC Vref 0 15 VIL DC Vref 0 15 VIL AC Vref 0 31 高于VIH AC 为高 纹波只要不低于VIL DC
  • Angular_项目完善搜索功能(表单处理)

    在商品名称和商品价格以及商品类别都输入或者选择合法的情况下才能进行搜索 一 product service ts添加一个新的方法 获取所有商品类别 getAllCategories string return 电子产品 硬件设备 其他 二
  • 57 KVM工具使用指南-制作 LibcarePlus 热补丁

    文章目录 57 KVM工具使用指南 制作 LibcarePlus 热补丁 57 1 概述 57 2 手动制作 57 3 通过脚本制作 57 KVM工具使用指南 制作 LibcarePlus 热补丁 57 1 概述 LibcarePlus 支
  • 常见JDBC连接数据库字符串

    1 Mysql 驱动类 com mysql jdbc Driver 连接字符串 jdbc mysql localhost 3306 dbname 2 Oracle 驱动类 oracle jdbc driver OracleDriver 连接
  • 【数据库】Sqlite数据库

    1 sqlite数据库简介 SQLite是内嵌在Python中的轻量级 基于磁盘文件袋额数据库管理系统 就是一个文件 不需要安装和配置服务 支持使用SQL语句来访问数据库 该数据库使用C语言开发 支持大多数SQL91标准 支持原子的 一致的
  • c++ 共享内存方法实现windows进程通信

    主要逻辑 1 进程1 2通过读写一块共享内存完成这2个进程间的通信 2 进程互斥锁Mutex作用是实现进程同步 防止进程2一直读 实现进程1写一次进程2读一次 进程1代码 发送数据 include
  • keil新工程编译问题

    1 新建工程 找不到first和last 需要在工程中添加相对应芯片的start XXX swenjian 2 移植操作系统 error L6200E Symbol SysTick Handler multiply defined 这是在操
  • cuda矩阵乘法(简单理解)

    提示 文章写完后 目录可以自动生成 如何生成可参考右边的帮助文档 CUDA矩阵乘法 矩阵规模 一 一维并行 1 一维线程并行 thread 2 一维块线程并行 block 3 一维共享A一行程并行 shared 二 二维并行 1 共享存储二
  • 差分 【一维差分和二维差分】

    全文目录 一维差分 差分数组的构建 二维差分 差分矩阵的构建 一维差分 首先来了解一下差分的性质 差分是前缀和的逆运算 如果说前缀和是 S f n 那么差分就是 D f 1 n 也就是说 原数组是差分数组的前缀和 原数组 a i 差分数组
  • 自动化测试系列 —— UI自动化测试

    UI 测试是一种测试类型 也称为用户界面测试 通过该测试 我们检查应用程序的界面是否工作正常或是否存在任何妨碍用户行为且不符合书面规格的 BUG 了解用户将如何在用户和网站之间进行交互以执行 UI 测试至关重要 通过执行 UI 测试 测试人
  • 全球及中国可穿戴医疗设备市场潜力分析与投资动态调研报告2022-2028年

    全球及中国可穿戴医疗设备市场潜力分析与投资动态调研报告2022 2028年 修订日期 2022年2月 出版单位 鸿晟信合研究院 对接人员 周文文 内容分析有删减 了解详情可查看咨询鸿晟信合研究院专员 目录 第一章 可穿戴医疗设备行业相关概述
  • VS2019或者VS2017创建ASP.NET项目

    最近在学 NET Web应用程序开发 做个记录 默认大家的本机的IIS服务已经搭建好了 没有搭建好的自行百度 文章目录 首先是VS的相关配置 然后是项目的创建 发布网站 项目的发布 IIS配置 一 首先是VS的相关配置 首先打开VS2019
  • C# 获取本地主机IP地址

  • 数据库----------唯一约束、默认约束、零填充约束

    目录 1 唯一约束 Unique 1 概念 2 语法 3 添加唯一约束 4 删除唯一约束 2 默认约束 default 1 概念 2 语法 3 添加默认约束 4 删除默认约束 3 零填充约束 zerofill 了解即可 1 概念 2 操作
  • R语言基础

    专注系列化 高质量的R语言教程 推文索引 联系小编 付费合集 本篇总结一些关于工具包的问题 所指的 工具包 对应的英文原文是package s 本篇目录如下 1 工具包简介 2 安装工具包 2 1 CRAN 2 2 GitHub 2 3 离