本指南旨在帮助你充分利用 R 邮件列表,避免尴尬。与列表上发布的许多回复一样,它以简洁的方式编写。这并非出于不友好,更多的是将有限的可用时间和空间分配给技术问题,而不是社交礼仪。
列表:请记住,R 是由志愿者构建和维护的免费软件。他们有各种理由贡献软件并参与邮件列表,但通常时间有限。
礼貌:请记住,习俗不同。有些人非常直接。其他人则用对冲和道歉来表达他们所说的一切。要宽容。粗鲁永远是不合适的,但有时“阅读手册”是适当的回应。不要在列表上浪费时间讨论此类事项。人身攻击绝对不合适。
关于统计的问题:R 邮件列表主要用于有关 R 软件的问题和讨论。但是,有时也会发布有关统计方法的问题。如果问题问得很好,并且列表中的某人感兴趣,它可能会引出有益且最新的答案。另请参阅 Usenet 组 sci.stat.consult(应用统计和咨询)和 sci.stat.math(数学统计和概率)。
基础统计和课堂作业:R-help 不适用于这些。
哪个列表:R-help、R-package-devel、R-devel 还是 Bioconductor?现在有两个,现在有三个广泛使用的邮件列表,用于讨论有关 R 的问题,还有一个列表专门用于生物导体包和生物信息学的使用问题。R-help 的目的是让希望使用 R 来解决问题但未必对编程感兴趣或了解编程的人能够理解。R-package-devel 于 2015 年 5 月创建,专门帮助 R 包作者编写和检查他们的 R 包,尤其是那些用于 CRAN 的包。R-devel 用于讨论有关 R 开发和编程的问题。可能引发非程序员无法理解的讨论的问题应转到 R-devel 而不是 R-help。但是,有关包开发的问题,例如通过 R CMD check
,应转到 R-package-devel
而不是 R-devel。例如,涉及 C、C++ 等代码的问题应转到 R-devel。涉及纯 R 代码的更一般性问题以及可能引起 R-help 的大量且多样化订阅者感兴趣的问题应转到 R-help。
生物导体用于发布有关 生物导体 开发、新代码可用性、使用生物导体的问题和解决方案的问答等公告。有关详细信息,请参阅 生物导体邮件列表。有关贡献包的问题,请参阅 以下内容。
特定于平台的问题:对于 Mac OS X、Debian/Ubuntu 和 Fedora/Redhat 上的 R,分别有 R-sig-Mac、R-sig-Debian 和 R-sig-Fedora 列表。针对这些平台的具体问题(尤其是 Mac OS X 上的重新安装和 R.app GUI)更有可能在适当的列表中获得见解的回复,这当然也是讨论可能存在的错误的地方。
发帖前做好功课:如果很明显你已经进行了基本的背景调查,那么你更有可能获得内容丰富的回复。另请参阅本页稍后的 其他资源。
help.search("keyword")
和 apropos("keyword")
(在 R 提示符处输入此内容)。RSiteSearch("keyword")
(在 R 提示符处)以搜索 R 函数、贡献包和 R-Help 帖子。有关其他选项和限制搜索,请参阅 ?RSiteSearch
。?functionname
,例如 ?prod
)发帖的技术细节:有关以下内容的更多详细信息,请参阅 一般说明
令人惊讶的行为和错误:您认为是错误的内容可能是许多其他内容,例如您不喜欢的默认行为、一个特性、一个未记录的特性或文档中的错误。您不必为了提问而让自己局限于其中之一。如果它是一个真正的错误,有人会注意到它。在您发布真正的错误报告之前,请务必阅读 R-faq 中的R 错误。如果您完全不确定某事是否是一个错误,请向 r-help 发布一个问题,而不是向 r-bugs 发布错误报告 - 每个错误报告都需要 R 核心成员手动操作。此外,请参阅 Simon Tatham 关于如何有效报告错误的文章。
对于有关意外行为或可能错误的问题,您至少应该将 sessionInfo()
的输出复制并粘贴到您的邮件中。在提及版本号时,请始终使用完整版本号,例如“2.6.1”,而不仅仅是“2.6”,还要提及平台(Windows、Linux、MacOS X,及其版本)。其他可能相关的详细信息包括语言环境(在 R 提示符下键入 Sys.getlocale()
),以及您是安装了 R 的预编译二进制版本还是自己编译的。如果函数不在“base”包中,请包含 library(help=thatPackage)
的标头输出。如果您正在使用旧版本的 R 并且认为它无法正常工作,请在发布之前升级到最新版本并尝试一下。如果可能,请尝试当前的 R 补丁或 R-devel 版本的 R(有关详细信息,请参阅常见问题解答),以查看问题是否已得到解决。
对 CRAN 贡献包中的错误通常应直接报告给包维护者(由命令 maintainer("package-name")
报告)。您还可能能够从包维护者那里获得有关问题的帮助。
不要说“R 崩溃了”,您可能认为这意味着 R 给出了一个错误并终止了您的代码片段,但大多数人会认为这是 R 程序的异常终止。确切地说出发生了什么,包括您收到的任何错误消息。
示例:有时提供一个小示例会很有帮助,人们可以实际运行。例如
If I have a matrix x as follows:
> x <- matrix(1:8, nrow=4, ncol=2,
dimnames=list(c("A","B","C","D"), c("x","y"))
> x
x y
A 1 5
B 2 6
C 3 7
D 4 8
>
how can I turn it into a dataframe with 8 rows, and three
columns named `row', `col', and `value', which have the
dimension names as the values of `row' and `col', like this:
> x.df
row col value
1 A x 1
...
(To which the answer might be:
> x.df <- reshape(data.frame(row=rownames(x), x), direction="long",
varying=list(colnames(x)), times=colnames(x),
v.names="value", timevar="col", idvar="row")
)
提供示例时,最好提供一个构造数据的 R 命令,如上方的 matrix()
表达式。对于更复杂的数据结构,dump("x", file=stdout())
将打印一个表达式,该表达式将重新创建对象 x
。
其他资源:在发帖之前不总是咨询这些资源是可以的,除非您有一个非常普遍的问题,并且文档的主题表明立即相关。响应可能只是将您指向其中一个资源。
回复其他帖子
4*runif(1)
,并等待这么多个小时常见的发帖错误
最后的话
提出好的问题是一项技能。如果你一开始没有得到对你来说有用的答案,不要灰心。简洁且在技术上准确的回复可能就是这样,而不是故意的贬低。如果你对你的帖子中的一些回复感到侮辱,不要急于做出回应——你很可能会后悔。阅读 Eric Raymond 的文章 如何以聪明的方式提问,以获取更多建议,并深入了解人们在技术邮件列表上的行为(但不要尝试向 catb.org 上的人询问有关 R 的问题)。
发帖人应注意,R 列表是公开讨论列表,您发布的任何内容都将被存档并可通过多个网站访问多年。
由 Tony Plate(tplate at acm dot org)编译,最近更新于 2013 年 7 月