冲扬心法

笑声激发自强,发愤、图强、飞身向上

   :: 首页  ::  ::  ::  :: 管理

本篇简要介绍使用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")将输出这个包中所有函数名和数据集列表以及简短描述:

  

 

posted on 2017-05-26 16:57  风雨一肩挑  阅读(2473)  评论(0编辑  收藏  举报