1.6 如何从R中获得帮助

在开始写R代码之前,最重要的是要了解如何得到帮助。有多种方法可以得到帮助。首先,如果你想知道某个函数或数据集的信息,可以输入?,后面加上函数名。如果你想查找某个函数,输入两个问号(??),后面加上与此函数相关的关键词。对于特殊字符、关键字和多个字词的搜索需要加上单引号或双引号。例如:

  1. ?mean #打开mean函数的帮助页面
  2. ?"+" #打开加法操作的帮助页面
  3. ?"if" #打开if的帮助页面,用于分支代码
  4. ??plotting #搜索所有包含"plotting" 的主题
  5. ??"regression model" #搜索所有与regression model相关的主题

提示

#符号表示注释。这意味着R将忽略此行的其他部分。使用注释来为你的代码添加说明,这样就可以使你记起以前做过的事。

函数helphelp.search分别等同于???,但是你必须把你的参数括在引号中。以下命令与之前的相当:

  1. help("mean")
  2. help("+")
  3. help("if")
  4. help.search("plotting")
  5. help.search("regression model")

apropos函数4能找到匹配其输入的变量(以及函数)。如果你能记住部分已创建的变量或要使用的函数名,apropos就会非常好用。例如,假设你已经创建了一个变量a_vector

4 拉丁文,意为“一个能搜索联机手册的UNIX程序”。

  1. a_vector <- c(1, 3, 6, 10)

你可以通过apropos重新记起这个变量:

  1. apropos("vector")
  2. ## [1] ".__C__vector" "a_vector" "as.data.frame.vector"
  3. ## [4] "as.vector" "as.vector.factor" "is.vector"
  4. ## [7] "vector" "Vectorize"

结果包含你刚刚创建的变量a_vector以及所有其他包含vector字符串的变量。在这个例子中,其他的函数都是R的内置函数。

找到包含特定字符串的变量固然是好,但你也可以把apropos结合正则表达式来更精确地匹配。

提示

正则表达式是匹配字符串的一个跨语言的语法。本书只会稍作涉猎,但是建议你学会使用它们,因为它能改变你的生活。从http://www.regular-expressions.info/quickstart.html开始,然后看看Michael Fitzgerald的《学习正则表达式》吧。

例如,apropos的以下简单示例试图寻找所有以z结尾的变量,或者含有4到9之间数字的所有变量:

  1. apropos("z$")
  2. ## [1] "alpe_d_huez" "alpe_d_huez" "force_tz" "indexTZ" "SSgompertz"
  3. ## [6] "toeplitz" "tz" "unz" "with_tz"
  4. apropos("[4-9]")
  5. ## [1] ".__C__S4" ".__T__xmlToS4:XML" ".parseISO8601"
  6. ## [4] ".SQL92Keywords" ".TAOCP1997init" "asS4"
  7. ## [7] "assert_is_64_bit_os" "assert_is_S4" "base64"
  8. ## [10] "base64Decode" "base64Encode" "blues9"
  9. ## [13] "car90" "enc2utf8" "fixPre1.8"
  10. ## [16] "Harman74.cor" "intToUtf8" "is_64_bit_os"
  11. ## [19] "is_S4" "isS4" "seemsS4Object"
  12. ## [22] "state.x77" "to.minutes15" "to.minutes5"
  13. ## [25] "utf8ToInt" "xmlToS4"

大多数函数都能通过查找相关的范例来更好地了解它们的工作原理。你可以使用example函数查看它们。也有一些较长的概念演示,你可以通过demo函数查看:

  1. example(plot)
  2. demo() #列出所有演示
  3. demo(Japanese)

R是模块化的,它被分成不同的(后面将详细讨论),其中一些包含片段(vignettes),是指导如何使用这些包文件的短文档。可以使用browseVignettes来浏览所有在你机器上的片段:

  1. browseVignettes()

你还可以使用vignette函数访问一个特定的片断(但如果你的记性和我一样糟糕,与其尝试记住某个包和片断的名称,还不如结合browseVignettes和网页搜索):

  1. vignette("Sweave", package = "utils")

帮助搜索操作符??browseVignettes只会发现那些你已经安装了的包里的东西。如果你想查找“任何”包,可以使用RSiteSearch,它会查询整个http://search.r-project.org网站的包。多个单词组成的短语必须用大括号括上:

  1. RSiteSearch("{Bayesian regression}")

提示

学习如何自我帮助非常重要。想出一个与你工作相关的保留字,然后尝试使用???aproposRSiteSearch搜索它吧。

互联网上有大量与R相关的资源。你可以从以下这些开始。

  • R有一些邮件列表(http://www.r-project.org/mail.html),收集了多年来积累的关于语言的各种问题。最起码值得订阅通用列表R-help。
  • RSeek(http://rseek.org)是一个R的网页搜索引擎,能查找出各种函数、R邮件列表归档中的讨论和博客文章。
  • R-博客(http://www.r-bloggers.com)是R主要的博客社区,这是关注R社区新闻和小技巧的最佳方式。
  • 编程问答网站Stack Overflow(http://www.stackoverflow.com),也是一个活跃的R社区,它提供了一个可替代的R-help邮件列表。你还可以通过回答问题得到点数和徽章!