• 初窥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")将输出这个包中所有函数名和数据集列表以及简短描述:

      

  • 相关阅读:
    oracle语法查某个字段为空
    MQC集群配置错误
    maven打包报错:Failed to execute goal org.apache.maven.plugins:maven-surefire-plugin:2.5:test
    ibm-mq-scope属性的作用?
    Name jms can't bind to context问题解决
    对比两张Excel表数据差异时,遇到数据雷响不一致
    excel如何复制筛选内容
    怎么对比两个excel文档的数据差异
    怎么把txt转换成excel
    一张表的某列值去更新另一张表的某列值。
  • 原文地址:https://www.cnblogs.com/hiwuchong/p/6862497.html
Copyright © 2020-2023  润新知