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

      

  • 相关阅读:
    HDU4507 吉哥系列故事――恨7不成妻(数位dp)
    UCF Local Programming Contest 2017 G题(dp)
    ICPC Latin American Regional Contests 2019 I题
    UCF Local Programming Contest 2017 H题(区间dp)
    HDU2089 不要62
    AcWing1084 数字游戏II(数位dp)
    UCF Local Programming Contest 2017 F题(最短路)
    Google Code Jam 2019 Round 1A Pylons(爆搜+贪心)
    AcWing1083 Windy数(数位dp)
    Vue
  • 原文地址:https://www.cnblogs.com/hiwuchong/p/6862497.html
Copyright © 2020-2023  润新知