初窥R(基本说明、获取帮助、工作空间、输入输出、包)
本篇简要介绍使用R的一些基本概念,包括基本说明、获取帮助、工作空间、输入输出,每个知识点中都会通过一个例子来练习。
一、R基本情况说明
1、R是一种区分大小写的解释性语言。
2、控制台默认使用命令提示符 < 表示。我们可以在 < 后每次输入一条命令;按 Enter键 执。或者一次性将一组命令写在一个文件中,执行该文件。
3、R的数据类型包括向量、矩阵、数据框(类似于数据集)和列表(各种对象的集合)。
4、R的大部分功能都是有程序内置函数和用户自编函数提供的,一次交互性会话期间的所有数据对象都被保存于内存中(这点很重要)。一些基本函数都是默认直接可使用的,其他高级函数则包含于按需加载的程序包中。
5、R语句是由函数和赋值构成的。其中,R使用<- 作为赋值符号。注:R允许以=作为赋值符,但是这并不是标准写法。另外,我们可以反转赋值方向。x <- 5 和 5 -> x 的意思一样。
6、注释。R的注释符是#,任何#后出现的文本都会被R解释器忽略。
先来个小例子练练手吧:
录入代码和部分运行结果:
> age <- c(1,3,5,2,11,9,12,3)
> weight <- c(4.4,5.3,7.2,5.2,8.5,7.3,6.0,10.4,10.2,6.1)
> mean(weight)
[1] 7.06
> sd(weight)
[1] 2.077498
> cor(age,weight)
Error in cor(age, weight) : 不兼容的量度
> age <- c(1,3,5,2,11,9,3,9,12,3)
> cor(age,weight)
[1] 0.9075655
> plot(age,weight)
>
对以上的过程进行解释。注意,只是解释每个命令提示符的过程。[]表示结果。
①使用函数c()以向量的形式录入一组数据,并赋值给变量age,表示年龄;
②同理,使用函数c()以向量的形式录入一组数据,并赋值给变量weight,表示体重;
③对体重求平均;
④求体重的标准差;注:这里报了一个错误:不兼容的量度。原来是age向量和weight向量的数值个数不一致导致的。重新对age进行赋值,再重新运行标准差的命令。(通过键盘上的方向键 ↑ 可以快速录入之前的命令文本)
⑤计算年龄age和体重weight的相关度;
⑥用图形展示年龄和体重的关系。
二、获取R帮助
学会如何通过帮助文档来助力编程,是一个攻城狮必备的软技能。
R的内置帮助文档提供了当前已安装包中所有函数的细节、参考文献以及使用示例。我们可以通过以下函数进行查看
函数 | 功能 |
help.start() | 打开帮助文档首页,HTML格式 |
help("函数名")或?函数名 | 查看函数的帮助,比如help("c")表示查看函数c的帮助;“”可以省略 |
help.search("函数名")或??函数名 | 以函数名作为关键词在本地帮助文档中搜索 |
RSiteSearch("函数名") | 以函数名作为关键词搜索在线文档和邮件列表存档,结果以网页形式展现 |
apropos("参数名",mode="function") | 列出名称中包含有制定参数的所有函数 |
data() | 列出当前所加载的包中所有的可用示例数据集 |
vignette() | 列出当前所加载包中所有的vignette文档,又称 小文品,一般是PDF格式的文档 |
example("函数名") | 函数的使用示例,引号可以省略 |
vignette("foo") | 以foo作为主题,显示相关的小文品 |
三、R的工作空间
工作空间(workspace)就是当前R的工作环境,它储存着所有用户定义的对象(向量、矩阵、 函数、数据框、列表)。
在一个R会话结束时,你可以将当前工作空间保存到一个镜像中,并在下 次启动R时自动载入它。各种命令可在R命令行中交互式地输入。使用上下方向键查看已输入命 令的历史记录。这样我们就可以选择一个之前输入过的命令并适当修改,最后按回车重新执行它。
当前的工作目录(working directory)是R用来读取文件和保存结果的默认目录。我们可以使 用函数getwd()来查看当前的工作目录,或使用函数setwd()设定当前的工作目录。
如果需要读 入一个不在当前工作目录下的文件,则需在调用语句中写明完整的路径。记得使用引号闭合这些 目录名和文件名。
管理工作空间的部分标准命令见表
函 数 | 功能 |
getwd() | 显示当前的工作目录 |
setwd("mydirectory") | 修改当前的工作目录为mydirectory |
ls() | 列出当前工作空间中的对象 |
rm(objectlist) | 移除(删除)一个或多个对象 |
help(options) | 显示可用选项的说明 |
options() | 显示或设置当前选项 |
history(#) | 显示最近使用过的#个命令(默认值为25) |
savehistory("myfile") | 保存命令历史到文件myfile中(默认值为.Rhistory) |
loadhistory("myfile") | 载入一个命令历史文件(默认值为.Rhistory) |
save.image("myfile") | 保存工作空间到文件myfile中(默认值为.RData) |
save(objectlist, file="myfile") | 保存指定对象到一个文件中 |
load("myfile") | 读取一个工作空间到当前会话中(默认值为.RData) |
q() | 退出R。将会询问你是否保存工作空间 |
通过运行以下代码清单和观察结果来理解以上的命令:
①查询当前的工作目录,是默认目录
②更改当前的工作目录,到自己的目录。记得路径要用正斜杠。
③再次查询当前的工作目录,发现已经更改为我们自己的路径了
④创建一个包含20个均匀分布的随机变量的向量,赋值给x
⑤查询x
⑥生成x的摘要统计量
⑦生成x的直方图
⑧格式化打印台的显示,保留三位有效数字,全局临时变量。注意:数值型的变量显示三位有效数字,很好理解;如果向量中的每个数据的精确度不一样又怎么显示呢?R采取的策略是:该向量所有数值最小的值按照digits的精确度显示,其他的数值和该结果的最小的位数保持一致。例如上述例子中,options(digits=3)时,此时查询x向量,因为x的最小值是0.05688816,最小值保留三位有效数字是0.0569,x中其他的数值要和0.0569小数位数保持一致,这就是为什么其他的数值看起来有效个数并不是3的原因。
⑨x的直方图效果如下:
⑩将命令的历史记录保存到文件名为day01中,没有则新建
⑪工作空间保存到wd_day01中,没有则新建(如果不指定文件名load(),会在当前工作路径下自动创建.RData文件,如已存在,则追加),效果如下:
⑫结束当前会话。
现在我们重新启动会话,运行以下代码观察效果:
①重新打开的会话的工作空间被重置为默认的工作路径
②重新设置工作空间路径后,ls()并没有任何对象
③加载之前保存的工作空间文件,这时,我们之前创建的对象x就可以再次使用啦,并且,我们发现此时的options("digits")值恢复为默认值了(7)。
四、R的输入输出
1、启动R后,默认开始一个交互式的会话,从键盘接收输入和从屏幕进行输出。
2、source("文件名"),在当前会话执行一个脚本文件,文件名不包含路径的话,R会假设此脚本在当前工作目录中。
3、sink()重定向文本文件。不加参数sink()仅仅向屏幕返回输出结果;sink("文件名"),将结果重定向到指定文件中,默认情况下,覆盖该文件;设置参数append=TRUE时,追加在指定文件后,不覆盖;设置split=TRUE时,输出结果同时发送给屏幕和输出到文件中。
4、图形输出可以使用以下命令,最后使用dev.off()将输出返回到终端:
举例:
如果执行:
source("script.R")
将会在当前回话中执行文件script.R中的R代码,结果显示在屏幕上;
如果执行:
sink("输出文件名",append=TRUE,split=TRUE)
pdf("图片.dpf")
source(script2.R)
当前回话将会执行script.R中R代码,结果会同时显示在屏幕上,文本输出将会追加到文件输出文件的后面,图形输出保存在到文件 图片.pdf中。
如果执行:
sink()
dev.off()
source("script3.R")
文件script3.R中的R代码将会执行,结果仅仅显示在屏幕上
五、R包
R提供大量开箱即用的功能(自带功能),更让人激动的是一部分功能可以通过可选模块的下载和安装来实现。下载地址:http://cran.r-project.org/web/packages
这些包横跨多个领域、数量惊人,包括了地理数据分析、处理蛋白质质谱、心里检测分析。
包是什么?
包是函数、数据、预编译代码以一种定义完善的格式组成的集合。存储包的位置叫做 库(library)。函数 .libPaths()能够显示 库的路径,函数library()则可以显示库中所有的包,包只有被加载才能使用,search()用于查询那些包被加载可以使用了:
包的安装和更新
第一次安装包,可以使用install.packages()。不加参数执行install.packages()将显示一个CRAN镜像站点列表,选择其中一个镜像站点后,可以看到所有可用包的列表,选择其中一个下载和安装。
选中其中一个站点双击:
下载提示成功:
如果你知道自己想安装包的名字的话,可以直接使用 install.packages("包名")来下载安装它。
update.packages()可以更新已经安装的包:
installed.packages()将列出安装的包,以及他们的版本号、所在库位置、依赖关系、通行证等信息。
包的载入
包的下载仅仅是将包从某个镜像网站下载并放入库中的过程,要在R中使用这个包的话,还需要在当前回话中载入它,可以使用命令 library()。如要使用gclus包,执行命令library(gclus)即可;
包在每次对话中只需要载入一次;
如果有必要,可以在自定义启动中启动那些会频繁使用的包。(包括之前的工作空间等,我们发现R中部分功能在开始新的会话时会恢复到默认,这对于大部分程序员来说,是可忍孰不可忍!好,我们下一章专门探索一下如何自定义启动环境)
包的使用
在载入一个包之后就可以使用中这个包中一系列的函数和数据集了。
命令help(package= "gclus")将输出这个包中所有函数名和数据集列表以及简短描述:
初窥R(基本说明、获取帮助、工作空间、输入输出、包)的更多相关文章
- Java发送邮件初窥
一.背景 最近朋友的公司有用到这个功能,之前对这一块也不是很熟悉,就和他一起解决出现的异常的同时,也初窥一下使用Apache Common Email组件进行邮件发送. 二.Java发送邮件的注意事项 ...
- Flutter 即学即用系列博客——04 Flutter UI 初窥
前面三篇可以算是一个小小的里程碑. 主要是介绍了 Flutter 环境的搭建.如何创建 Flutter 项目以及如何在旧有 Android 项目引入 Flutter. 这一篇我们来学习下 Flutte ...
- IPFS初窥
虽然区块链有很多令人兴奋的特性,但是也有其固有的缺点.比如,文件或者长度较长的文本信息就不适合存储在链上.那么如何解决这个缺点呢?一个解决方案就是IPFS(Interplanetary File Sy ...
- Scrapy001-框架初窥
Scrapy001-框架初窥 @(Spider)[POSTS] 1.Scrapy简介 Scrapy是一个应用于抓取.提取.处理.存储等网站数据的框架(类似Django). 应用: 数据挖掘 信息处理 ...
- 初窥Kaggle竞赛
初窥Kaggle竞赛 原文地址: https://www.dataquest.io/mission/74/getting-started-with-kaggle 1: Kaggle竞赛 我们接下来将要 ...
- scrapy2_初窥Scrapy
递归知识:oop,xpath,jsp,items,pipline等专业网络知识,初级水平并不是很scrapy,可以从简单模块自己写. 初窥Scrapy Scrapy是一个为了爬取网站数据,提取结构性数 ...
- WWDC15 Session笔记 - Xcode 7 UI 测试初窥
https://onevcat.com/2015/09/ui-testing/ WWDC15 Session笔记 - Xcode 7 UI 测试初窥 Unit Test 在 iOS 开发中已经有足够多 ...
- iOS视频直播初窥:高仿<喵播APP>
视频直播初窥 视频直播,可以分为 采集,前处理,编码,传输, 服务器处理,解码,渲染 采集: iOS系统因为软硬件种类不多, 硬件适配性比较好, 所以比较简单. 而Android端市面上机型众多, 要 ...
- js算法初窥05(算法模式02-动态规划与贪心算法)
在前面的文章中(js算法初窥02(排序算法02-归并.快速以及堆排)我们学习了如何用分治法来实现归并排序,那么动态规划跟分治法有点类似,但是分治法是把问题分解成互相独立的子问题,最后组合它们的结果,而 ...
随机推荐
- PHP函数include include_once require和require_once的区别
了解下include.include_once.require和require_once这4个函数: include函数:会将指定的文件读入并且执行里面的程序: require函数:会将目标文件的内容 ...
- 解决Connection to Xxx@localhost failed.
解决: Connection to jianshu@localhost failed. [08001] Could not create connection to database server. ...
- shell脚本简单例子
eg: Expect: 1.用环境变量RANDOM随机生成一个100以内的随机数 2.read读取当前输入 3.当前输入对比随机生成的数 4.当两个数相等时跳出苏循环,并计数(比较n次结果才相等) # ...
- CarbonData:大数据融合数仓新一代引擎
[摘要] CarbonData将存储和计算逻辑分离,通过索引技术让存储和计算物理上更接近,提升CPU和IO效率,实现超高性能的大数据分析.以CarbonData为融合数仓的大数据解决方案,为金融转型打 ...
- 集合<class'set'>
>>> s = {1,2,3,4} >>> s&{1,3}{1, 3}>>> s|{11}{1, 2, 3, 4, 11}>> ...
- DRF Django REST framework 之 序列化(三)
Django 原生 serializer (序列化) 导入模块 from django.core.serializers import serialize 获取queryset 对queryset进行 ...
- luogu P2899 [USACO08JAN]手机网络Cell Phone Network |贪心
include include include include include include define db double using namespace std; const int N=1e ...
- ios-AutoLayout(自动布局代码控制)简单总结
转自:http://blog.sina.com.cn/s/blog_7c336a830102vaht.html 原理:IOS6.0 之后,苹果优化了UI界面的布局方式,提出了自动布局的概念,和之前的a ...
- 一份详细的 Matplotlib入门指导
hMatplotlib是最受欢迎的二维图形库,但有时我们很难做到得心应手的去使用. 如何更改图例上的标签名称? 如何设置刻度线? 如何将比例更改为对数? 如何在我的情节中添加注释和箭头? 如何在我的图 ...
- uni-app微信小程序开发之引入腾讯视频小程序播放插件
登录微信小程序管理后台添加腾讯视频播放插件: 正式开始使用腾讯视频小程序插件之前需先在微信公众平台 -> 第三方设置 -> 插件管理处添加插件,如下图所示: 在uni-app中引入插件代码 ...