第一章 R语言介绍

news2024/11/16 23:47:31

1.为何使用R

与起源于贝尔实验室的S语言类似,R也是一种为统计计算和绘图而生的语言和环境,它是一套开源的数据分析解决方案,由一个庞大且活跃的全球性研究型社区维护。但是,市面上也有许多其他流行的统计和制图软件,如Microsoft Excel、SAS、IBM SPSS、Stata以及Minitab。为何偏偏要选择R?
R有着非常多值得推荐的特性。
 多数商业统计软件价格不菲,投入成千上万美元都是可能的。而R是免费的!如果你是一位教师或一名学生,好处显而易见。
 R是一个全面的统计研究平台,提供了各式各样的数据分析技术。几乎任何类型的数据分析工作皆可在R中完成。
 R囊括了在其他软件中尚不可用的、先进的统计计算例程。事实上,新方法的更新速度是以周来计算的。如果你是一位SAS用户,想象一下每隔几天就获得一个新SAS过程的情景。
 R拥有顶尖水准的制图功能。如果希望复杂数据可视化,那么R拥有最全面且最强大的一系列可用功能。
 R是一个可进行交互式数据分析和探索的强大平台,其核心设计理念就是支持图1-1中所概述的分析方法。举例来说,任意一个分析步骤的结果均可被轻松保存、操作,并作为进一步分析的输入。
 从多个数据源获取并将数据转化为可用的形式,可能是一个富有挑战性的议题。R可以轻松地从各种类型的数据源导入数据,包括文本文件、数据库管理系统、统计软件,乃至专门的数据仓库。它同样可以将数据输出并写入到这些系统中。R也可以直接从网页、社交媒体网站和各种类型的在线数据服务中获取数据。
 R是一个无与伦比的平台,在其上可使用一种简单而直接的方式编写新的统计方法它易于扩展,并为快速编程实现新方法提供了一套十分自然的语言。
 R的功能可以被整合进其他语言编写的应用程序,包括C++、Java、Python、PHP、Pentaho、SAS和SPSS。这让你在继续使用自己熟悉语言的同时在应用程序中加入R的功能。
 R可运行于多种平台之上,包括Windows、UNIX和Mac OS X。这基本上意味着它可以运行于你所能拥有的任何计算机上。(本人曾在偶然间看到过在iPhone上安装R的教程,让人佩服,但这也许不是一个好主意。)
 如果你不想学习一门新的语言,有各式各样的GUI(Graphical User Interface,图形用户界面)工具通过菜单和对话框提供了与R语言同等的功能。
在这里插入图片描述
图1-2是展示R制图功能的一个示例。使用一行代码做出的这张图,说明了蓝领工作、白领工作和专业工作在收入、受教育程度以及职业声望方面的关系。从专业角度讲,这是一幅使用不同的颜色和符号表示不同分组的散点图矩阵,带有两类拟合曲线(线性回归和局部加权回归)、置信椭圆以及两种对密度的展示(核密度估计和轴须图)。另外,在每个散点图中都自动标出了值最大的离群点。如果这些术语对你来说很陌生也不必担心。我们将在后续各章中陆续谈及它们。这里请暂且相信我,它们真的非常酷。(搞统计的人读到这里时估计已经垂涎三尺了。)
图1-2主要表明了以下几点。
 受教育程度(education)、收入(income)、职业声望(prestige)呈线性相关。
 就总体而言,蓝领工作者有着更低的受教育程度、收入和职业声望;反之,专业工作者有着更高的受教育程度、收入和职业声望。白领工作者介于两者之间。
 有趣的例外是,铁路工程师(RR.engineer)的受教育程度较低,但收入较高,而牧师(minister)的职业声望高,收入却较低。
第8章将会进一步讨论这类图形。重要的是,R能够让你以一种简单而直接的方式创建优雅、信息丰富、高度定制化的图形。使用其他统计语言创建类似的图形不仅费时费力,而且可能根本无法做到。
可惜的是,R的学习曲线较为陡峭。因为它的功能非常丰富,所以文档和帮助文件也相当多。另外,由于许多功能都是由独立贡献者编写的可选模块提供的,这些文档可能比较零散而且很难找到。事实上,要掌握R的所有功能,可以说是一项挑战。
本书的目标是让读者快速而轻松地学会使用R。我们将遍览R的许多功能,介绍到的内容足以让你开始着手分析数据,并且在需要你深入了解的地方给出参考材料。下面我们从R的安装开
始学习。
在这里插入图片描述

2. R的获取与安装

R可以在CRAN(Comprehensive R Archive Network,http://cran.r-project.org)上免费下载。Linux、Mac OS X和Windows都有相应编译好的二进制版本。根据你所选择平台的安装说明进行安装即可。稍后我们将讨论如何通过安装称为包(package)的可选模块(同样可从CRAN下载)来增强R的功能。附录G描述了如何对R进行版本升级。

3. R的使用

R是一种区分大小写的解释型语言。你可以在命令提示符(>)后每次输入并执行一条命令,或者一次性执行写在脚本文件中的一组命令。R中有多种数据类型,包括向量、矩阵、数据框(与数据集类似)以及列表(各种对象的集合)。我们将在第2章中讨论这些数据类型。
R中的多数功能是由程序内置函数、用户自编函数和对对象的创建和操作所提供的。一个对象可以是任何能被赋值的东西。对于R来说,对象可以是任何东西(数据、函数、图形、分析结果,等等)。每一个对象都有一个类属性,类属性可以告诉R怎么对之进行处理。
一次交互式会话期间的所有数据对象都被保存在内存中。一些基本函数是默认直接可用的,而其他高级函数则包含于按需加载的程序包中。
R语句由函数和赋值构成。R使用<-,而不是传统的=作为赋值符号。例如,以下语句:
x <- rnorm(5)
创建了一个名为x的向量对象,它包含5个来自标准正态分布的随机偏差。
在这里插入图片描述

3.1 获取帮助

R提供了大量的帮助功能,学会如何使用这些帮助文档可以在相当程度上助力你的编程工作。R的内置帮助系统提供了当前已安装包中所有函数①的细节、参考文献以及使用示例。你可以通过表1-2中列出的函数查看帮助文档。
在这里插入图片描述
函数help.start()会打开一个浏览器窗口,我们可在其中查看入门和高级的帮助手册、常见问题集,以及参考材料。函数RSiteSearch()可在在线帮助手册和R-Help邮件列表的讨论存档中搜索指定主题,并在浏览器中返回结果。由函数vignette()函数返回的vignette文档一般是PDF格式的实用介绍性文章。不过,并非所有的包都提供了vignette文档。不难发现,R提供了大量的帮助功能,学会如何使用这些帮助文档,毫无疑问有助于编程。我经常使用?来查看某些函数的功能(如选项或返回值)

3.2 工作空间

工作空间(workspace)就是当前R的工作环境,它存储着所有用户定义的对象(向量、矩阵、函数、数据框、列表)。在一个R会话结束时,你可以将当前工作空间保存到一个镜像中,并在下次启动R时自动载入它。各种命令可在R命令行中交互式地输入。使用上下方向键查看已输入命令的历史记录。这样我们就可以选择一个之前输入过的命令并适当修改,最后按回车重新执行它。
当前的工作目录(working directory)是R用来读取文件和保存结果的默认目录。我们可以使用函数getwd()来查看当前的工作目录,或使用函数setwd()设定当前的工作目录。如果需要读入一个不在当前工作目录下的文件,则需在调用语句中写明完整的路径。记得使用引号闭合这些目录名和文件名。用于管理工作空间的部分标准命令见表1-3。
在这里插入图片描述
代码清单1-2 用于管理R工作空间的命令使用示例

setwd("C:/myprojects/project1") 
options() 
options(digits=3) 
x <- runif(20) 
summary(x) 
hist(x) 
q()

首先,当前工作目录被设置为C:/myprojects/project1,当前的选项设置情况将显示出来,而数字将被格式化,显示为具有小数点后三位有效数字的格式。然后,我们创建了一个包含20个均匀分布随机变量的向量,生成了此数据的摘要统计量和直方图。当q()函数被运行的时候,程序将向用户询问是否保存工作空间。如果用户输入y,命令的历史记录保存到文件.Rhistory中,工作空间(包含向量x)保存到当前目录中的文件.RData中,会话结束,R程序退出。
注意setwd()命令的路径中使用了正斜杠。R将反斜杠(\)作为一个转义符。即使你在
Windows平台上运行R,在路径中也要使用正斜杠。同时注意,函数setwd()不会自动创建一个不存在的目录。如果必要的话,可以使用函数dir.create()来创建新目录,然后使用setwd()将工作目录指向这个新目录。
在独立的目录中保存项目是一个好主意。你也许会在启动一个R会话时使用setwd()命令指定到某一个项目的路径,后接不加选项的load(“.RData”)命令。这样做可以让你从上一次会话结束的地方重新开始,并保证各个项目之间的数据和设置互不干扰。在Windows和Mac OS X平台上就更简单了。跳转到项目所在目录并双击之前保存的镜像文件即可。这样做可以启动R,载入保存的工作空间,并设置当前工作目录到这个文件夹中。

3.3 输入和输出

启动R后将默认开始一个交互式的会话,从键盘接受输入并从屏幕进行输出。不过你也可以处理写在一个脚本文件(一个包含了R语句的文件)中的命令集并直接将结果输出到多类目标中。

3.3.1 输入

函数source(“filename”)可在当前会话中执行一个脚本。如果文件名中不包含路径,R将
假设此脚本在当前工作目录中。举例来说,source(“myscript.R”)将执行包含在文件
myscript.R中的R语句集合。依照惯例,脚本文件以.R作为扩展名,不过这并不是必需的。

3.3.2 文本输出

函数sink(“filename”)将输出重定向到文件filename中。默认情况下,如果文件已经存在,则它的内容将被覆盖。使用参数append=TRUE可以将文本追加到文件后,而不是覆盖它。参数split=TRUE可将输出同时发送到屏幕和输出文件中。不加参数调用命令sink()将仅向屏幕返回输出结果

3.3.3 图形输出

虽然sink()可以重定向文本输出,但它对图形输出没有影响。要重定向图形输出,使用表1-4中列出的函数即可。最后使用dev.off()将输出返回到终端。
在这里插入图片描述

4.R语言包

R提供了大量开箱即用的功能,但它最激动人心的一部分功能是通过可选模块的下载和安装来实现的。目前有5500多个称为包(package)的用户贡献模块可从http://cran.r-project.org/ web/packages下载。这些包提供了横跨各种领域、数量惊人的新功能,包括分析地理数据、处理蛋白质质谱,甚至是心理测验分析的功能。本书中多次使用了这些可选包

4.1 包的安装

有许多R函数可以用来管理包。第一次安装一个包,使用命令install.packages()即可。
举例来说,不加参数执行命令install.packages()将显示一个CRAN镜像站点的列表,选择其中一个镜像站点之后,将看到所有可用包的列表,选择其中的一个包即可进行下载和安装。如果知道自己想安装的包的名称,可以直接将包名作为参数提供给这个函数。例如,包gclus中提供了创建增强型散点图的函数。可以使用命**install.packages(“gclus”)**来下载和安装它。
一个包仅需安装一次。但和其他软件类似,包经常被其作者更新。使用命update.packages()可以更新已经安装的包。要查看已安装包的描述,可以使用installed.
packages()命令,这将列出安装的包,以及它们的版本号、依赖关系等信息。

4.2 包的载入

包的安装是指从某个CRAN镜像站点下载它并将其放入库中的过程。要在R会话中使用它,还需要使用library()命令载入这个包。例如,要使用gclus包,执行命令library(gclus)
即可。当然,在载入一个包之前必须已经安装了这个包。在一个会话中,包只需载入一次。如果需要,你可以自定义启动环境以自动载入会频繁使用的那些包。启动环境的自定义在附录B中有详细描述。

5.来源

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/136614.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

NLP自然语言处理NLTK常用英文功能汇总

自然语言处理 (NLP) 是一门研究如何让计算机程序理解人类语言的学科。NLTK (Natural Language Toolkit) 是一个 Python 包,可以用于 NLP 的应用开发。 很多数据都是非结构化的,而且包含可以被人类读懂的文本。在用编程方式分析这些数据之前,我们需要对它们进行预处理。在本…

Allegro174版本新功能介绍之背景颜色设置

Allegro174版本新功能介绍之背景颜色设置 Allegro升级到了174的时候,打开的时候默认是黑色的背景,如下图 选择界面 工作界面 和166以及172版本不一样,174支持切换成白色的背景,具体操作如下 选择setup

Java--基础语法

文章目录一、输出hello world二、示例说明三、基本语法三、标识符规则四、注释一、输出hello world public class Helloworld {/*第一个java程序*输出Hello world!!!*/public static void main(String[] args) {//输出Hello world!!!System.out.println("Hello world!!!&…

如何使用Git同时绑定Github以及Gitee

今天接到一项任务&#xff0c;是需要clone一个github上面的项目&#xff0c;正兴高采烈的git clone的时候&#xff0c;git bash框框报错&#xff0c;突然一想&#xff0c;我貌似一直用的Gitee,绑定的也是Gitee,并没有绑定Github,于是就有了这篇博客记录如何使用Git同时绑定Gite…

CTF压轴题解题思路和过程

前言 压轴题难度极大。我在这里详细的记录一下解题思路和过程 题目初探 拿到题目&#xff0c;为三个文件&#xff0c;其中mem_secret-963a4663.vmem为常见内存镜像文件&#xff0c;另外两个文件格式未知。 使用volatility进行分析无法识别profile。 接着分析分析Encryption.…

探索云原生技术之容器编排引擎-Kubernetes/K8S详解(6)

❤️作者简介&#xff1a;2022新星计划第三季云原生与云计算赛道Top5&#x1f3c5;、华为云享专家&#x1f3c5;、云原生领域潜力新星&#x1f3c5; &#x1f49b;博客首页&#xff1a;C站个人主页&#x1f31e; &#x1f497;作者目的&#xff1a;如有错误请指正&#xff0c;将…

Day 19-Vue3 技术_其它

1.全局API的转移 Vue 2.x 有许多全局 API 和配置。例如&#xff1a;注册全局组件、注册全局指令等。 //注册全局组件 Vue.component(MyButton, {data: () > ({count: 0}),template: <button click"count">Clicked {{ count }} times.</button> })//注…

ESXI6.5.0安装部署

将ESXI6.5.0系统盘放入光驱&#xff0c;插入服务器&#xff0c;启动服务器&#xff1b; 进入服务器BIOS系统&#xff1b; 启动方式选择DVD&#xff1b; 进入ESXI6.5.0安装程序&#xff1b; 等待安装程序载入&#xff1b; 敲回车&#xff1b; 敲回车&#xff1b; …

【token】一.token的作用;二.Express中实现token的方法

目录 一.token的作用&#xff1a; 1.控制表单的重复提交&#xff1a;在表单中加入隐藏的表单控件&#xff0c;在这个隐藏的表单控件中带上token字符串。 2.身份验证&#xff1a;用来验证向服务器发起请求&#xff08;请求服务器的资源&#xff09;的用户是否是合法的用户。经…

如何理解 CRUD 与 REST

全文 2070 字 阅读时间约 6 分钟 本文首发于码匠技术博客​​​​​​​ 目录 什么是 CRUD&#xff1f; CRUD 的发展简史 CRUD 规则 什么是 REST&#xff1f; REST 的发展简史 REST 规则 CRUD VS REST 关于码匠 CRUD 和 REST 是应用开发领域中两个比较常见的概念&…

解决安装Tensorflow2: ERROR annot determine archive format of XXX保存问题

安装命令报错&#xff1a; ERROR: Cannot unpack file C:\Users\lenovo\AppData\Local\Temp\pip-unpack-mdiptqlf\simple.html (downloaded from C:\Users\lenovo\AppData\Local\Temp\pip-req-build-oq32e170, content-type: text/html); cannot detect archive format解决方法…

Barra模型因子的构建及应用(一)

一、摘要 Barra模型可以追溯至1974年&#xff0c;美国学者Barr Rosenberg对投资组合的风险和收益进行分析的多因子风险模型。随后Rosenberg成立了Barra&#xff0c;并针对美国权益市场提出了Barra USE1模型&#xff0c;现在已更新到USE4&#xff1b;而针对中国权益市场提出的B…

微服务架构下的可观测性

微服务架构下的可观测性 一、服务可观测性 传统架构下排查问题传统项目在出现异常或性能问题时&#xff0c;通常都是基于系统日志文件来排查。而在微服务分布式部署架构下&#xff0c;日志文件随微服务分散存储&#xff0c;对于排查问题工作量很大。传统监控告警平台也仅针对平…

痞子衡嵌入式:探讨i.MXRT下FlexSPI driver实现Flash编程时对于中断支持问题

大家好&#xff0c;我是痞子衡&#xff0c;是正经搞技术的痞子。今天痞子衡给大家介绍的是i.MXRT下FlexSPI driver实现Flash编程时对于中断支持问题。 前段时间有客户在官方社区反映 i.MXRT1170 下使用官方 SDK 里 FlexSPI 驱动去擦写 Flash 时不能很好地支持全局中断。客户项目…

内核解读之内存管理(2)内存管理三级架构之内存结点node

文章目录0、概述1、内存节点node0、概述 结合NUMA的架构&#xff0c;Linux抽象出了三级内存管理架构&#xff1a;内存节点node、内存区域zone和物理页框page。 在NUMA模型中&#xff0c;每个CPU都有自己的本地内存节点&#xff08;memory node&#xff09;&#xff0c;而且还…

qq录制视频保存到哪了?如何更改qq录屏存储位置

一、查看qq录制视频保存位置如果有录制视频的需求&#xff0c;相信大部分人都是使用qq自带的录屏功能来录制视频。那qq录屏后的视频在哪里去找&#xff1f;今天就给大家分享如何查看qq录制完的视频保存位置操作方法&#xff1a;第一步&#xff1a;电脑上登录qq&#xff0c;在qq…

Cadence PCB仿真 使用Allegro PCB SI为BRD文件创建通用型IBIS模型的方法图文教程

⏪《上一篇》   🏡《总目录》   ⏩《下一篇》 1,概述 本文简单介绍使用Allegro PCB SI软件为BRD PCB设计文件中的元器件创建IBIS模型的方法。 2,创建方法 第1步:确定打开PCB文件的软件是 Allegro PCB SI 如果不是Allegro PCB SI,可执行File→Change Editor…更换软…

尚医通-查询所有子节点-前端整合-更新医院状态(二十三)

目录&#xff1a; &#xff08;1&#xff09;医院管理-查询所有子节点接口 &#xff08;2&#xff09;医院列表-前端整合 &#xff08;3&#xff09;更新医院上线状态-功能实现 &#xff08;1&#xff09;医院管理-查询所有子节点接口 先做一个省的查询 在DictContrlller…

数据可视化大屏百度地图GPS轨迹位置感知状态开发实战案例解析(包含缩放控件、点线覆盖物、弹窗、标注图标分类功能)

系列文章目录 1.数据可视化大屏应急管理综合指挥调度系统完整案例详解&#xff08;PHP-API、Echarts、百度地图&#xff09; 2.数据可视化大屏百度地图API开发&#xff1a;停车场分布标注和检索静态版 3.百度地图高级开发&#xff1a;map.getDistance计算多点之间的距离并输入…

C语言及算法设计课程实验三:最简单的C程序设计——顺序程序设计(二)

C语言及算法设计课程实验三&#xff1a;最简单的C程序设计——顺序程序设计&#xff08;二&#xff09;一、实验目的二、 实验内容2.2、实验内容2&#xff1a;求圆周长、圆面积、圆球表面积、圆球体积、圆柱体积三、 实验步骤3.2、顺序程序设计实验题目2&#xff1a;求圆周长、…