操作系统
R支持所有三种主要操作系统(OS)类型:Linux、Mac和Windows。R是平台无关的,尽管有一些特定于操作系统的怪癖,例如与文件路径表示法有关(参见第节2.4.3).
可以使用以下命令从R中查询特定于操作系统的基本信息系统信息()
:
系统.info()
#R> sysname释放计算机用户
#R> “Linux”“4.2.0-35-通用”“x86_64”“robin”
翻译成英语,以上输出意味着R在64位上运行(x86_64个
)Linux发行版(4.2.0-35通用
是Linux版本),当前用户是罗宾
。该命令还生成了其他四条信息(未显示),其含义在通过输入显示的帮助文件中有详细记录?系统.info
在R控制台中。
这个断言.反射该软件包可用于报告有关计算机操作系统和R设置的附加信息,并具有断言操作系统和其他系统特征的功能。这个资产_*()
函数的工作原理是测试语句的真实性,并在语句不真实时出错。在Linux系统上资产_is_linux()
将以静默方式运行,而资产_窗口()
将导致错误。该包还可以测试您正在使用的IDE(例如资产_is_rstudio()
)R的能力(资产_r_has_libcurl_capability()
等),以及可用的操作系统工具(例如assert_r_can_compile_code()
). 这些函数对于运行仅设计为在一种设置上运行的代码非常有用。
操作系统和资源监控
撇开细微差异不谈,R的计算效率在不同的操作系统中大致相同。超越\(32\)与\(64\)位问题(将在下一章中介绍)和进程分叉(见第章7),另一个需要考虑的与操作系统相关的问题是外部依赖性:R包所依赖的程序。有时必须手动安装外部包依赖性(即不使用install.packages()
). 这在基于Unix的系统(Linux和Mac)中尤其常见。在基于Debian的操作系统(如Ubuntu)上,可以在操作系统级别安装许多R包,以确保也安装了外部依赖项(请参阅第节2.3.4).
资源监控是检查关键操作系统变量状态的过程。对于计算密集型工作,以这种方式监视系统资源是明智的。资源监控可以帮助识别计算瓶颈。除了R分析功能,如普罗维斯(参见第节7.2),系统监控提供了一个有用的工具,用于了解R在报告操作系统状态的变量方面的表现,例如使用了多少RAM,这涉及到是否需要更多RAM这一更广泛的问题(在第章中介绍三).
随时间分配的CPU资源是另一个值得监控的常见操作系统变量2.1)以及操作系统上是否有可由并行代码利用的空闲CPU容量。
系统监控是一个复杂的主题,涉及到系统管理和服务器管理。幸运的是,有许多工具旨在简化对所有主要操作系统的监控。
- 在Linux上,shell命令
顶部
显示大多数发行版的关键资源使用数据。htop公司
和侏儒的系统监视器(系统监视器
,见图2.1)是分别使用命令行和图形用户界面的更精细的替代方案。许多选项,例如网猪
监控互联网使用情况。
- 在Mac上活动监视器提供了类似的功能。这可以从Launchpad中的Utilities文件夹启动。
- 在Windows上任务管理器提供进程使用RAM和CPU的关键信息。这可以在现代Windows版本中通过键入
Ctrl-Alt-Del键
或单击任务栏和“启动任务管理器”。
练习
您的计算机操作系统的确切版本是什么?
启动一个活动监视器,然后执行以下代码块。在里面重叠()
(或其并行版本mclapply()
)用于应用一个函数,介质()
,覆盖数据帧对象中的每一列X
(参见第节3.5有关“apply系列”函数的更多信息)。[这样做的原因是,数据帧实际上是向量的列表,每个向量形成一列。]系统输出日志(结果)与图中的比较2.1?
#注:使用2+GB RAM和几秒钟或更长时间,具体取决于硬件
#1:创建大数据集
X(X)= as.data.frame格式(矩阵(rnorm公司(1电子8),nrow公司= 1个7))
#2:使用单个核心找到每列的中间值
第1个= 重叠地(X,中位数)
#3:使用多个核心找到每列的中位数
第2页= 平行::麦克拉普利(X,中位数)
麦克拉普利
只有在Mac和Linux上才能并行工作。在第7章中,您将了解等效函数parLapply()
在Windows上并行工作。
在三次操作期间和之后,您注意到了CPU使用率、RAM和系统时间的哪些方面?
附加问题:结果会因操作系统的不同而发生什么变化?
R版本
重要的是要意识到R是一个不断发展的软件项目,其行为会随着时间而变化。一般来说,基本R对于做出破坏向后兼容性的更改非常保守。然而,软件包偶尔会从一个版本更改到下一个版本;通常这取决于包裹的年龄。对于大多数用例,我们建议始终使用最新版本的R和软件包,以便获得最新的代码。在某些情况下(例如在生产服务器上或在团队中工作),您可能还希望使用经过测试的特定版本,以确保稳定性。保持软件包最新是可取的,因为新代码往往更加高效、直观、健壮和功能丰富。本节介绍如何操作。
安装R
安装R的方法因Windows、Linux和Mac而异。
在Windows上,单个.exe文件
文件(托管于cran.r-project.org/bin/windows/base/)将安装基本R包。
在Mac上,应通过下载.包装
文件托管于cran.r-project.org/bin/macosx/.
在Linux上,安装方法取决于安装的Linux的分布,尽管原理是相同的。我们将介绍如何在基于Debian的系统上安装R,并在末尾提供有关其他Linux发行版的详细信息的链接。第一阶段是添加CRAN存储库,以确保安装了最新版本。例如,如果您运行的是Ubuntu 16.04,请将以下行附加到文件/等/apt/sources.list
:
黛布http://cran.rstudio.com/bin/linux/ubuntu十周年纪念日/
http://cran.rstudio.com
是后视镜(可由中列出的任何更换cran.r-project.org/mirrors.html)和单斜的
是版本。请参阅Debian公司和Ubuntu公司CRAN上的安装页面。
添加适当的存储库并更新系统后(例如,使用更新源
),r-基
和其他第页-
程序包可以使用恰当的
系统。例如,以下两个命令将安装基本R软件包(“bare-bones”安装)和软件包循环,具有外部依赖性:
苏多apt-get安装r-起重机底座#安装底座R
苏多apt-get安装r-cran-rcurl#安装rcurl包
apt-cache搜索“^r-.*”|排序
将显示可以从中安装的所有R包恰当的
在基于Debian的系统中。在基于Fedora的系统中,等效命令是yum列表R-\*
.
第二个命令的典型输出如下所示:
将安装以下附加软件包:libcurl3-nss(库卷3-nss)将安装以下新软件包libcurl3-nss r-cran-rcurl0升级,2新安装,0删除,16不升级。需要699 kB的档案。完成此操作后,将使用2132 kB的额外磁盘空间。你想继续吗?[是/否]
有关更多详细信息,请访问cran.r-project.org/bin/linux/Debian、Redhat和Suse操作系统。R也适用于FreeBSD和其他基于Unix的系统。
安装R后,应保持最新。
安装R软件包
大型项目可能需要安装多个软件包。在这种情况下,可以立即安装所需的软件包。使用处理空间数据的包示例,可以使用以下代码快速简洁地完成此操作:
包装= c(c)(“光栅”,“传单”,“rgeos”)#程序包名称
安装.包(pkgs)
在上面的代码中,所有需要的包都是用两行而不是三行来安装的,从而减少了输入。请注意,我们现在可以重复使用包装
对象加载它们:
安装= 重叠地(包装、图书馆、,仅字符= 真的)#加载它们
在上述代码中库(pkgs[i])
对文本字符串向量中存储的每个包执行。我们使用图书馆
这里而不是要求
因为如果包不可用,前者会产生错误。
在脚本开始时加载所有包是一种很好的做法,因为它可以确保所有依赖项都已安装之前执行代码所花费的时间。将包名称存储在字符向量对象中,例如包装
也很有用,因为它可以让我们一次又一次地参考它们。
安装具有相关性的R包
一些包具有外部依赖性(即它们调用R之外的库)。在类Unix系统上,最好将它们安装到操作系统上,绕过安装.包
这将确保在R包旁边正确安装和设置必要的依赖项。例如,在基于Debian的发行版(如Ubuntu)上,名称以开头的包r型起重机-
可以按如下方式进行搜索和安装(请参见cran.r-project.org/bin/linux/ubuntu/(如需这些列表):
适配卡搜索r-cran-#搜索可用的cran Debian包
苏多apt-get-install-r-cran-rgdal#安装rgdal包(带有依赖项)
在Windows上安装程序包帮助管理和更新具有系统级依赖项的R包。例如R工具可以使用以下命令安装用于在Windows上编译C/C++代码的包:
正在更新R程序包
有效的R设置将包含最新的程序包。这是可以做到的适用于所有包具有:
此函数的默认值是问
要设置为的参数真的
,可以控制下载到系统中的内容。这通常是可取的,因为更新几十个大型包可能会消耗大量可用系统资源。
要自动更新包,可以添加行update.packages(ask=FALSE)
给你.R配置文件
启动文件(有关更多信息,请参阅下一节.R配置文件
). 感谢理查德·科顿(Richard Cotton)的这一建议。
RStudio通过Tools(工具)>Check for Package Updates(检查包更新)提供了一种更具交互性的R中包更新方法。RStudio支持许多这样的节省时间的技巧,如中所述随后的一节。接下来(在练习之后),我们来看看如何使用启动文件配置R。
练习
- 你使用的是什么版本的R?它是最新的吗?
- 您的任何软件包需要更新吗?
R启动
每次R启动时,默认情况下都会运行几个文件脚本,如中所述?启动
。本节介绍如何自定义这些文件,以便您保存API密钥或加载常用函数。在学习如何修改这些文件之前,我们将看看如何使用R的启动参数忽略它们。如果您想“打开”自定义设置,可以将其“关闭”,例如用于调试。
R的一些启动参数可以在RStudio中进行交互控制。查看联机帮助文件定制RStudio了解更多信息。
R启动参数
R启动命令可以附加许多参数(R(右)
在shell环境中),这与启动有关。以下内容尤为重要:
--无病毒
和--无输入
参数告诉R只在当前工作目录中查找启动文件(将在下一节中介绍)。
--无存储
告诉R不要加载名为.R数据
(R会话文件的默认名称),可能存在于当前工作目录中。
--无保存
告诉R在会话结束时不要询问用户是否要保存保存在RAM中的对象q()
。
添加其中的每一项都会使R加载速度稍快,这意味着在退出时需要的用户输入稍少。在这种情况下,R的默认设置自动从最后一个会话加载数据可能会有问题。请参见R简介,附录B,了解更多启动参数。
在启用上述所有选项的情况下,加载R的“普通”版本的简单方法是使用同名选项:
R的启动文件概述
每次R启动时都会读取两个文件(除非使用上面列出的命令行选项之一):
R启动时(除非启动时--无病毒
)它首先搜索伦维龙
然后.R配置文件
,按顺序。尽管Renviron公司
首先搜索,我们将查看.R配置文件
首先,它更简单,对于许多设置任务来说更有用。这两个文件可以存在于计算机上的三个目录中。
R启动文件的修改不应掉以轻心。这是一个高级主题。如果以错误的方式修改启动文件,可能会导致问题:对setwd()
在里面.R配置文件
例如,将中断开发工具 建造
和检查
功能。
小心操作,如果你把事情搞砸了,就删除那些有问题的文件!
启动文件的位置
令人困惑的是,这些文件的多个版本可以存在于同一台计算机上,每个会话只能使用其中一个版本。还要注意,只有在知道自己在做什么的情况下,才应该谨慎地更改这些文件。这是因为它们可以使您的R版本的行为与其他R安装不同,从而可能降低代码的再现性。
在此过程中,三个文件夹中的文件很重要:
重要的是要知道.R配置文件
和Renviron公司
这三个选项中正在使用的设置文件。R只使用一个.R配置文件
和一个Renviron公司
在任何会话中:如果您有.R配置文件
文件,R将忽略.R配置文件
在里面R_主页
和主页
.同样,.R配置文件
在里面主页
覆盖.R配置文件
在里面R_主页
.这同样适用于Renviron公司
:您应该记住,使用Renviron公司
将停用其他Renviron公司
文件夹。
要创建特定于项目的启动脚本,只需创建一个.R配置文件
并开始添加R代码,例如通过文件.edit(“.Rprofile”)
.记住,这将使.R配置文件
在主目录中被忽略。以下命令将打开您的.R配置文件
从R编辑器中:
文件.编辑(“~/.R配置文件”)#编辑。主页中的Rprofile
文件.编辑(“.R配置文件”)#编辑特定于项目的。R配置文件
Windows操作系统提供的文件路径并不总是在R中工作。特别是,如果您使用包含单个反斜杠的路径,例如C: \数据\数据.csv
,这将生成错误:错误:“C:\”中有意外输入
为了克服这个问题,R提供了两个功能,文件.path()
和normalizePath()
。前者可用于指定文件位置,而无需使用符号表示相对文件路径,如下所示:file.path(“C:”,“DATA”,“DATA.csv”)
后者接受任何输入字符串作为文件名,并输出操作系统的标准(规范)文本字符串。normalizePath(“C:/DATA/DATA.csv”)
例如,输出C: \数据\数据.csv
在Windows计算机上,但C: /DATA/DATA.csv
在基于Unix的平台上。请注意,只有后者才能在两个平台上工作,因此标准Unix文件路径表示法对所有操作系统都是安全的。
编辑Renviron公司
位于相同位置的文件将具有相同的效果。以下代码将创建特定于用户的Renviron公司
文件(其中可以存储API键和其他跨项目环境变量),而不会覆盖任何现有文件。
用户_邀请= 扩展路径(文件路径("~",“Renviron”))
文件.编辑(用户邀请)#如果失败,请使用另一个文本编辑器打开
这个病理学的包可以帮助找到.R配置文件
和Renviron公司
由于操作系统路径(_path)
功能。的输出示例(启动)
也很有启发性。
下面详细介绍了每种方法的位置、内容和用途。
这个.R配置文件
文件
默认情况下,R查找并运行.R配置文件
上述三个位置中的文件,按特定顺序排列。.R配置文件
文件只是每次运行R时运行的R脚本,可以在R_主页
,主页
和项目的主目录,使用获取()
。检查是否有站点范围.R配置文件
将在启动时为所有用户运行:
站点路径(_P)= R.home公司(组件= “家”)
fname(名称)= 文件路径(站点路径,“等等”,“Rprofile.site”)
文件。存在(名称)
上述代码检查是否存在R配置文件.站点
在该目录中。如上所述.R配置文件
位于主目录中的是特定于用户的。同样,我们可以使用测试此文件是否存在
我们可以使用R来创建和编辑.R配置文件
(警告:不要覆盖以前的.R配置文件
-我们建议您尝试特定于项目的.R配置文件
第一):
一个例子.R配置文件
文件
下面的示例提供了一个品尝者.R配置文件
.请注意,这只是一个普通的R脚本,但有一个不寻常的名称。了解发生了什么的最好方法是创建相同的脚本,并将其另存为.R配置文件
然后重新启动R会话以观察发生了哪些更改。要从RStudio中重新启动R会话,您可以单击会话>重新启动R
或使用键盘快捷键Ctrl+Shift+F10组合键
.
#有趣的欢迎语
消息(“你好,罗宾,欢迎来到R”)
#自定义为每个命令添加前缀的R提示符
#(空白提示使用“”)
选项(提示= “R4geo>”)
为了快速解释每一行代码:第一行代码只是在每次启动新的R会话时在控制台中打印一条消息。后者修改控制台中的控制台提示符(设置为>
默认情况下)。请注意,只需向.R配置文件
将设置更多功能。的一个重要方面.R配置文件
(和Renviron公司
)是那个吗每条线路运行一次,每个R会话仅运行一次。这意味着.R配置文件
可以在会话期间轻松更改。例如,以下命令运行midsession将返回默认提示:
有关这些以及其他潜在有用信息的更多详细信息.R配置文件
随后描述选项。有关有用的启动设置的更多建议,请参阅中的示例help(“启动”)
和在线资源,如statmethods.net(统计方法.net)R选项的帮助页面(可通过访问?选项
)在写自己的文章之前也值得一读.R配置文件
.
曾因不受欢迎而沮丧+
阻止复制和粘贴多行函数工作的符号?这些潜在的烦恼+
可以通过添加选项(continue=“”)
给你.R配置文件
.
设置选项
功能选项
上面使用的包含许多默认设置。打字选项()
提供了可以配置的内容的良好指示。自选项()
通常与个人偏好有关(很少涉及再现性),这是您在许多R课程中想要的,.R配置文件
在主目录或项目文件夹中是设置它们的合理位置。其他示例选项如下所示:
#带有定制提示
选项(提示= “R>”,数字= 4,显示.signif.stars= 错误的,继续= " ")
#使用较长的提示和空的“continue”缩进(默认值为“+”)
选项(提示= “R4Geo>”,数字= 三,继续= " ")
第一个选项在一行中更改四个默认选项。
- R提示符,来自钻孔
>
激动人心风险>
.
- 显示的位数。
- 重大事件后移除星星\(p\)-值。
- 卸下
+
在多行函数中。
尽量避免在启动文件中添加使代码不可移植的选项。例如,添加选项(字符串AsFactors=FALSE)
对你的启动脚本有敲门效应可读表格
和相关功能包括读取.csv
,使它们将文本字符串转换为字符,而不是默认的因子。这可能对您有用,但会降低代码的可移植性,因此请注意。
设置CRAN后视镜
避免每次跑步时都设置CRAN后视镜install.packages()
你可以在你的.R配置文件
.
#“local”创建一个新的空环境
#这样可以避免污染。带有对象r的GlobalEnv
地方的({
第页= 获取选项(“回购”)
第页[“CRAN”(起重机)] ="https://cran.rstudio.com/"
选项(回购=r)
})
RStudio镜像是由亚马逊EC2服务运行的虚拟机,它每天与奥地利的主CRAN镜像同步一次。由于RStudio使用亚马逊的CloudFront,存储库会自动分布在世界各地,因此无论您身在世界何处,数据都不需要走很远,因此下载速度很快。
这个财富包裹
本节说明了.R配置文件
参考为好玩而开发的软件包进行定制。下面的代码可以很容易地修改,以自动连接到数据库,或者确保下载了最新的包。
这个财富这个套餐包含了社区多年来收集的一些令人难忘的引语,称为R财富。每一笔财富都有一个数字。获取财富数字\(50\)例如,输入
财富::财富(50)
#>
#>挑衅性地解释说,“机器学习是统计数据减去任何检查
#>模型和假设”。
#>——Brian D.Ripley(关于机器学习和
#>统计数据)
#>用户!2004年,维也纳(2004年5月)
每次你开始一个会话时,很容易让R打印出其中一个真理,方法是将以下内容添加到.R配置文件
:
如果(交互式的())
尝试(命运::财富(),沉默= 真的)
这个交互()
该函数测试R是否在终端中交互使用。这个财富()
函数在内部调用尝试()
。如果财富包不可用,我们避免引发错误并继续。通过使用::
我们避免添加财富我们所附包裹清单中的包裹。
打字搜索()
,提供了附加包的列表。通过使用财富::fortune()
我们避免添加财富将包添加到该列表中。
功能.最后()
,如果它存在于.R配置文件
始终在会话结束时运行。我们可以用它来安装财富包装(如果需要)。要加载包,我们使用要求()
,因为如果未安装包要求()
函数返回错误的
并发出警告。
.最后= 功能() {
康德= 禁止显示警告(!要求(财富,悄悄地= 真的))
如果(秒)
尝试(安装.包(“财富”),沉默= 真的)
消息(“再见”,日期(),"\n个")
}
有用的功能
你可以使用.R配置文件
定义新的“helper”函数或重新定义现有的函数,以便更快地输入。例如,我们可以加载以下两个函数来检查数据帧:
#ht==机头尾部
#显示数据帧的前6行和后6行
ht(高温)= 功能(d),n个=6)旋转(头(d,n),尾(d,n))
#显示数据帧的前5行和前5列
小时= 功能(d) d日[1:5,1:5]
以及一个用于设置漂亮绘图窗口的函数:
尼斯帕尔= 功能(三月= c(c)(三,三,2,1),管理层= c(c)(2,0.4,0),tck公司= -0.01,
cex.axis公司= 0.9,拉斯维加斯= 1,mfrow公司= c(c)(1,1), ...) {
票面价值(三月=马尔,管理层=管理层,标准立方英尺=tck、,cex.axis公司=cex.axis公司,拉斯维加斯=拉斯维加斯,
mfrow公司=mfrow,…)
}
请注意,这些功能仅供个人使用,不太可能干扰其他人的代码。因此,即使您每天都使用某个软件包,我们也不建议将其加载到您的.R配置文件
.缩短交互式(但不可复制)代码编写的长函数名是使用.R配置文件
以提高效率。如果您经常使用视图()
例如,您可以通过缩写形式引用它来节省时间。如下所示,这样可以更快地查看数据集(尽管使用IDE驱动的自动补全(在下一节中概述),节省的时间更少)。
还要注意默认情况下加载许多函数的危险:这可能会降低代码的可移植性。另一个可能有用的更改设置.R配置文件
是R的当前工作目录。例如,如果希望R自动将工作目录设置为项目的R文件夹,可以将以下代码行添加到项目-特定的.R配置文件
:
使用创建隐藏环境。R配置文件
除了降低代码的可移植性之外,在.R配置文件
它会把你的工作空间搞得乱七八糟:当您运行ls()
命令,您的.R配置文件
功能将出现。如果你跑步rm(列表=ls())
,您的功能将被删除。克服这个问题的一个妙招是使用隐藏的对象和环境。当对象名称以开头时。
,默认情况下,它不会出现在ls()
功能
.obj= 1
“.obj” %单位:% 最小二乘法()
#>[1]错误
这个概念也适用于环境。在.R配置文件
我们可以创建一个隐藏环境
然后将函数添加到此环境中
.env(英语)$ht(高温)= 功能(d),n个= 6)旋转(头(d,n),尾(d,n))
在结束时.R配置文件
文件,我们使用贴上
,这使得可以仅通过名称引用环境中的对象。
这个Renviron公司
文件
这个Renviron公司
文件用于存储系统变量。它遵循与.R配置文件
文件:R首先查找全局Renviron公司
文件,然后用于本地版本。的典型用法Renviron公司
文件将指定远程智能广播系统(_L)
路径,用于确定新包的安装位置:
#Linux操作系统
远程智能广播系统(_L)=~/R/库
#Windows(窗口)
远程智能广播系统(_L)=C: /R/库
在此设置之后,install.packages()
将包保存在指定的目录中远程智能广播系统(_L)
.该目录的位置可以在随后被引用,如下所示:
系统.getenv(“R_LIBS_USER”)
#>[1]“/home/travis/R/Library”
可以通过调用系统getenv()
没有参数。请注意,许多环境变量已经预先设置,不需要在中指定Renviron公司
.主页
例如,可以使用Sys.getenv(“主页”)
从操作系统的环境变量列表中获取。影响R行为的最重要环境变量列表记录在鲜为人知的帮助页面中帮助(“环境变量”)
.
要在会话期间设置或取消设置环境变量,请使用以下命令:
系统检测(“测试”=“测试存储”)#为会话设置环境变量
系统取消设置(“测试”)#取消设置
的另一个常见用法Renviron公司
用于存储API密钥和身份验证令牌,这些密钥和令牌将从一个会话提供给另一个会话。一个常见的用例是设置“envvar”GITHUB_PAT公司
,将由开发工具通过函数打包github_pat()
。以另一个示例为例,中的以下行Renviron公司
设置ZEIT_钥匙
中使用的环境变量diezeit公司包裹:
您需要登录并为环境变量启动一个新的R会话(由访问系统getenv()
)可见。要测试示例API密钥是否已成功添加为环境变量,请运行以下命令:
使用Renviron公司
用于存储库路径和API密钥等设置的文件非常有效,因为它减少了每次R会话更新设置的需要。此外,同样Renviron公司
该文件将跨不同平台工作,因此可以安全地保存它。
例子Renviron公司
文件
我的Renviron公司
文件数年来一直在增长。我经常在台式电脑和笔记本电脑之间切换,所以为了保持一致的工作环境,我也有相同的Renviron公司
我所有机器上的文件。以及包含远程智能广播系统(_L)
条目和一些API密钥,我的Renviron公司
有其他几行:
TMPDIR=/data/R_tmp/
。当R运行时,它会创建临时副本。在我的工作机器上,默认目录是网络驱动器。
R_COMPILE_PKGS=3
.Byte编译所有包(在第章中介绍三).
R_LIBS_SITE=/usr/lib/R/SITE-library:/usr/lib/R/library
我显式地声明在哪里查找包。我的大学有一个包含过期软件包的网站目录。我想避免使用这个目录。
R_DEFAULT_PACKAGES=utils,grDevices,图形,统计,方法
。明确说明要加载的包。注意,我不加载数据集
包裹,但我保证方法
始终加载。由于历史原因方法
包在某些应用程序中默认不加载,例如Rscript(脚本)
.
练习
存储启动文件的三个位置是什么?您的计算机上的这些位置在哪里?
对于每个位置,是否.R配置文件
或Renviron公司
文件是否存在?
创建一个.R配置文件
打印消息的当前工作目录中的文件快乐高效的R编程
每次在这个位置启动R。
中的启动文件发生了什么R_主页
如果在中创建它们主页
或本地项目目录?
R工作室
RStudio是R的集成开发环境(IDE)。它以其直观灵活的界面为R用户和开发人员提供了便利。RStudio鼓励良好的编程实践。通过其广泛的功能,RStudio可以帮助您成为更高效的R程序员。例如,由于智能自动补全,RStudio可以大大减少记忆和键入函数名的时间。RStudio最重要的功能包括:
- 灵活的窗格布局可优化屏幕空间的使用,并实现快速交互式视觉反馈。
- 智能自动完成函数名、包和R对象。
- 多种键盘快捷键。
- 对象的可视化显示,包括可搜索的数据显示表。
- 实时代码检查、调试和错误检测。
- 用于安装和更新软件包的菜单。
- 项目管理和与版本控制的集成。
- 快速显示函数源代码和帮助文档。
上述特性列表应该清楚地表明,对于成为一名高效的R程序员来说,一个设置良好的IDE和一个安装良好的R安装一样重要。与R本身一样,了解RStudio的最佳方法是使用它。因此,值得在阅读本节的同时,使用RStudio来提高您的生产力。
安装和更新RStudio
RStudio是一个成熟的、功能丰富且功能强大的集成开发环境(IDE),针对R编程进行了优化,并在R开发人员中广受欢迎。开源版本是完全开源的(可以从项目的GitHub repo中看到)。它可以从RStudio网站安装在所有主要操作系统上rstudio.com网站.
如果您已经有RStudio并想更新它,只需单击帮助>检查更新
在菜单中。为了快速高效地工作,应尽可能使用键盘快捷键,减少对鼠标的依赖。RStudio有许多键盘快捷键可以帮助实现这一点。要尽早养成良好习惯,请尝试在不接触鼠标的情况下访问RStudio Update界面。在Linux和Windows上,下拉菜单用中高音
按钮,以便可以通过以下方式找到菜单项:
Alt+H U组合键
在Mac上,它的工作方式不同。命令+?
应激活跨菜单项的搜索,允许通过以下方式实现相同的操作:
命令+?更新
在RStudio中,Linux和Windows版本与Mac版本的键盘快捷方式不同。在本节中,为了简洁起见,我们通常只使用Windows/Linux快捷键。Mac等价物通常通过简单地替换Ctrl键
和中高音
使用Mac特定命令
按钮。
窗口窗格布局
RStudio有四个主窗口“窗格”(见图2.2)每一种都有一系列用途:
这个“源”窗格,用于编辑、保存R代码并将其发送到控制台(左上角)。请注意,当您启动RStudio时,此窗格默认不存在:当您打开R脚本时,它会出现,例如通过文件->新建文件->R脚本
。此窗格中的一个常见任务是通过Ctrl/Cmd+Enter键
.
这个控制台窗格。此处输入的任何代码都由R逐行处理。此窗格非常适合在将最终结果保存在上面的“源”窗格中之前以交互方式测试想法。
这个环境窗格(右上角)包含有关加载到工作区中的当前对象的信息,包括它们的类、维度(如果它们是数据帧)和名称。此窗格还包含选项卡式子窗格,其中包含发送到控制台的可搜索历史记录以及(如果适用于项目)Build和Git选项。
这个“文件”窗格(右下角)包含一个简单的文件浏览器、一个绘图选项卡、包和帮助选项卡以及一个查看器,用于可视化交互式R输出,如传单包和HTML“小部件”生成的输出。
有效地使用每一个面板并在它们之间快速导航是一项将随着时间的推移而发展的技能,并且只会随着实践而提高。
练习
您正在开发一个可视化数据的项目。按照以下步骤测试多面板RStudio工作流:
使用“文件”窗格.
键入下降
在中“源”窗格然后打输入
使函数download.file()
自动完成。然后键入"
,将自动完成""
,粘贴要下载的文件的URL(例如https://www.census.gov/2010census/csv/pop_change.csv
)和文件名(例如pop_更改.csv
).
使用执行完整命令Ctrl+Enter键
:
下载.file("https://www.census.gov/2010census/csv/pop_change.csv",
“extdata/pop_change.csv”)
编写并执行一个命令以读入数据,例如
pop_change(弹出更改)= 读取.csv(“extdata/pop_change.csv”,跳过= 2)
使用“环境”窗格单击数据对象pop_change(弹出更改)
。请注意,这将运行命令视图(pop_change)
,它在左上角面板中启动一个交互式数据浏览窗格(参见图2.3).
使用慰问要测试不同的绘图命令以可视化数据,请将要保留的代码保存回“源”窗格,作为pop_change(弹出更改)。R(右)
.
使用“绘图”选项卡在“文件”窗格中滚动过去的绘图。使用导出下拉按钮保存最佳结果。
上面的示例显示了对这些窗格的理解以及如何交互使用它们可以帮助提高R编程的速度和效率。此外,还有许多RStudio设置可以帮助确保它符合您的需求。
RStudio选项
一系列项目选项
和全局选项
在RStudio的工具
菜单(在Linux和Windows中可通过键盘访问Alt+T键
).其中大多数是自我解释的,但值得一提的是,有几个可以提高编程效率:
GIT/SVN项目设置允许RStudio为您的版本控制系统提供图形界面,如第章所述9.
R版本设置允许RStudio“指向”不同的R版本/口译员,这对于某些项目来说可能更快。
恢复。R数据
:取消勾选此默认值会阻止加载以前创建的R对象。这将使R启动更快,也减少了由于先前创建的对象而导致错误的可能性。因此,我们建议您取消勾选此框。
代码编辑选项可以使RStudio适应您的编码风格,例如,通过阻止大括号的自动完成,这可能会让一些经验丰富的程序员感到厌烦。有可能Vim模式
使RStudio充当(部分)Vim仿真器。
诊断设置可以通过添加额外的诊断或删除诊断来提高RStudio的效率,如果这些诊断会降低您的工作速度。这可能是使用RStudio分析较旧的低规格计算机上的大型数据集的人遇到的问题。
外观:如果你很难看到源代码,更改默认字体大小可以减少眯着眼屏幕的时间开销,从而使你成为一个更有效率的程序员。这方面的其他选择更多地与美学有关。字体类型和背景颜色等设置也很重要,因为在编程环境中感到舒适可以提高生产力。去工具>全局选项
修改这些。
自动完成
R提供了一些基本的自动补全功能。例如,键入函数名的开头尼泊尔
(以下简称rnorm()
),和打击选项卡
两次将导致打印与此文本字符串关联的完整函数名。在这种情况下,将显示两个选项:rnbinom公司
和rnorm公司
,为用户提供有用的可用提醒。这同样适用于括在引号中的文件名:键入时间
在包含名为测试。R(右)
应生成全名“测试.R”
正在自动完成。RStudio建立在这个功能的基础上,并将其提升到一个新的水平。
RStudio中自动完成的默认设置运行良好。它们很直观,对许多用户,尤其是初学者来说,可能工作得很好。但是,可以通过导航到来修改RStudio的自动完成选项工具>全局选项>代码>完成在RStudio的顶级菜单中。
而不是仅在以下情况下自动完成选项选项卡
按下时,RStudio auto会随时完成这些操作。基于前面的示例,当键入前三个字符时,RStudio会触发自动补全:rno公司
.当只键入第一个字符,然后键入选项卡
:自动完成不能取代选项卡
自动完成,但对其进行补充。请注意,在RStudio中,用户在输入rn选项卡
与在前一段中描述的基本R控制台中输入相同文本相比:RNG种类
和RNG版本
.这说明RStudio的自动补全功能与R不区分大小写。这是一件好事,因为R没有一致的函数名样式!
与R的内置命令行相比,RStudio还可以更智能地自动完成对象和文件名。要测试此功能,请尝试键入美国
,后跟Tab键。按下直到美国恐怖分子
则按Enter键,使其自动完成。最后,输入$
应在屏幕上留下以下文本,四列应显示在下拉框中,以便您使用向下箭头选择感兴趣的变量。
美国恐怖分子$ #RStudio中应出现列的下拉菜单
举一个更复杂的例子,变量名存储在数据
班级的插槽空间多边形数据帧
(由基础空间包定义的类服务提供商)以长形式表示spdf@数据$变量名
。在这种情况下spdf(spdf)
是对象名称,数据
是插槽和变量名
是变量名。RStudio这样做S4系列
通过启用缩写的自动补全功能,对象更易于使用spdf$varname
.另一个例子是RStudio能够找到隐藏在子文件夹中的文件。打字“日期
会发现测试。R(右)
即使它位于子文件夹中,例如R/测试。R(右)
.在使用RStudio时,还有许多其他聪明的自动完成技巧可以提高R的生产力,这些技巧最好通过实验和点击来找到选项卡
经常在你的R编程工作中。
键盘快捷键
RStudio有许多有用的快捷方式,可以帮助您减少在代码和RStudio周围使用鼠标和鼠标点击的需要,从而提高编程效率。可以通过使用一个鲜为人知但非常有用的键盘快捷键(也可以通过工具菜单)。
Alt+Shift+K
这将显示RStudio中的默认快捷方式。值得花时间确定其中哪些对你的工作有用,并练习在最小程度上依赖鼠标的情况下快速与RStudio互动。通过设置自己的键盘快捷键,可以进一步增强这些自动完成功能的功能。然而,与设置一样.R配置文件
和Renviron公司
设置,这会降低工作流的可移植性。
下面列出了一些更有用的快捷方式:
Ctrl+Z/Shift+Z
:撤消/重做。
Ctrl+Enter键
:执行“源”窗格中的当前行或代码选择。
Ctrl+Alt+R组合键
:执行“源”窗格中当前打开的文件中的所有R代码。
Ctrl+左/右
:逐字快速浏览代码。
首页/结束
:导航到当前行的开头/结尾。
Alt+Shift+向上/向下
:向上或向下复制当前行。
Ctrl+D组合键
:删除当前行。
要设置自己的RStudio键盘快捷键,请导航至工具>修改键盘快捷键.
对象显示和输出表
了解当前R环境中的内容是很有用的。此信息可以通过以下方式显示ls()
,但此函数仅提供对象名称。RStudio提供了一种高效的机制来实时显示当前加载的对象及其详细信息:右上角的Environment选项卡。监视加载的对象并删除不再有用的对象是有意义的。这样做可以最大限度地降低工作流中出现混乱的可能性(例如,使用错误版本的对象),并减少RAM R需求量。“环境”选项卡中提供的详细信息包括对象的维度和一些其他详细信息,具体取决于对象的类(例如,大型数据集的大小(MB))。
RStudio的一个非常有用的功能是它的高级查看功能。这可以通过执行视图(对象)
或单击“环境”选项卡中的对象名称。尽管您无法在Viewer中编辑数据(从数据完整性的角度来看,这应该是一件好事),但RStudio的最新版本提供了一种高效的搜索机制,可以快速筛选和查看最感兴趣的记录(请参见图2.3).
项目管理
在RStudio的最右上方,有一个小下拉菜单,在一个透明框中用R表示。这个菜单可能很小很简单,但在组织大型、复杂和长期项目方面非常有效。
RStudio项目的理念是,大部分R编程工作是更广泛任务的一部分,该任务可能包括输入数据、R代码、图形和数字输出以及描述工作的文档。可以在硬盘上随机散布这些元素,但不建议这样做。相反,项目的概念鼓励可重复的工作,这样任何打开您正在使用的特定项目文件夹的人都应该能够重复您的分析并复制您的结果。
因此强烈推荐你用项目来组织你的工作。从长远来看,这可以节省时间。从可移植性的角度来看,组织数据、代码和输出也很有意义:如果您复制文件夹(例如通过GitHub),则可以从任何计算机上对其进行操作,而无需担心当前计算机上是否有正确的文件。这些任务是使用RStudio的简单项目系统实现的,在该系统中,每次打开现有项目时都会发生以下情况:
工作目录会自动切换到项目的文件夹。这使得可以使用相对文件路径来引用数据和脚本文件,相对文件路径比绝对文件路径短得多。这意味着使用setwd()
是R用户常见的错误源,很少需要。
上次打开的文件将加载到“源”窗格中。在以前的会话中执行的R命令的历史记录也加载到历史记录选项卡中。这有助于一个会话和下一个会话之间的连续性。
这个文件
选项卡显示项目中关联的文件和文件夹,允许您快速查找以前的工作。
将加载与项目关联的任何设置,例如Git设置。这有助于协作和特定项目的设置。
每个项目都不同,但大多数包含输入数据、R代码和输出。为了保持整洁,我们建议使用类似以下的子目录结构:
项目/
-自述。房间#项目描述
-设置。R(右)#所需的程序包
-R(右)/#对于R代码
-输入#数据文件
-图形/
-输出/#结果
正确使用项目可以确保所有R源文件整齐地存储在一个具有有意义结构的文件夹中。这样就可以在人们期望的地方找到数据和文档。在这个系统下,数字和项目输出是项目设计中的“头等公民”,每个人都有自己的文件夹。
项目管理的另一种方法是将项目视为R包。对于大多数用例,不建议这样做,因为它对文件的放置位置进行了限制。然而,如果目标是代码开发和共享,创建一个小的R包可能是前进的方向,即使您从未打算在CRAN上提交它。创建R包比以前更容易,如中所述(棉花2013)最近(H.威克姆2015b条). The开发工具软件包有助于管理R的怪癖,使过程更加轻松。如果您使用GitHub,这种方法的优点是任何人都可以使用开发工具::install_github(“用户名/项目名称”)
尽管为每个小项目创建一个完整的包所需的管理费用将超过许多人的利益。
请注意设置。R(右)
甚至是一个.R配置文件
项目根目录中的文件允许在每次人们处理项目时加载特定于项目的设置。如前一节所述,.R配置文件
可以用于调整R在启动时的工作方式。它也是在逐个项目的基础上管理R配置的一种便携式方法。
RStudio的另一个功能是出色的调试支持。我们希望将感兴趣的读者引向RStudio网站。
练习
尝试修改RStudio设置的外观。
显示其他快捷方式的键盘快捷方式是什么?(提示:它以Alt+Shift键
在Linux和Windows上。)
尝试上一步显示的任意多个快捷方式。把你认为可以节省时间的东西写下来,也许写在电脑上的便利贴上。
BLAS和替代R口译员
在本节中,我们将介绍一些可用于加快R性能的系统级选项。注意,对于许多应用程序来说,稳定性比速度更重要,因此只有在以下情况下才应考虑这些因素:a)您已经用尽了更高效地编写R代码的选项,b)您有信心调整系统级设置。因此,这应该被视为一个高级部分:如果您对加速基数R不感兴趣,可以跳到硬件的下一部分。
许多统计算法操作矩阵。R使用基本线性代数系统(BLAS)框架进行线性代数运算。每当我们执行矩阵运算时,例如转置或求逆,我们都会使用底层的BLAS库。通过切换到不同的BLAS库,可能可以加快R代码的速度。如果您使用的是Linux,那么更改BLAS库很简单,但对于Windows用户来说可能很棘手。
两个开源替代BLAS库是阿特拉斯和开放式BLAS. The数学库是另一个实现,由Intel为Intel处理器设计并在Revolution R中使用(将在下一节中介绍),但它需要许可费。MKL库配有Revolution分析系统。根据您的应用程序,通过切换BLAS库,线性代数运算的运行速度可以比基本BLAS例程快几倍。
如果您使用macOS或Linux,可以通过以下函数检查是否有BLAS库设置基准:
其他口译员
R语言可以与R分开口译译员前者指R命令的含义,后者指计算机如何执行命令。已经开发了替代口译员,试图使R更快,尽管前景看好,但以下选项都没有完全实现。
Microsoft R打开它的前身是Revolution R Open(RRO),是微软R的增强发行版。关键的增强是它使用了多线程数学库,可以提高性能。
罗(以前称为CXXR,是C++的缩写),是R解释器的重新实现,以提高速度和效率。在新口译员中,这是最新的发展活动(截至2016年4月)。
pqrR公司(相当快的R)是R解释器的新版本。一个主要缺点是,它基于R-2.15.0。开发人员(Radford Neal)已经进行了许多改进,其中一些现已并入base R中。pqR公司是一个根据GPL授权的开源项目。pqR的一个显著改进是,它能够在具有多个处理器或处理器内核的系统上并行地进行一些数值计算,并与解释器的其他操作一起进行。
人人网在Java中重新实现R解释器,以便它可以在Java虚拟机(JVM)上运行。因为R将是纯Java,所以它可以在任何地方运行。
Tibco公司创建了一个名为TERR(TIBCO Enterprise Runtime for R)的基于C++的解释器,该解释器集成到他们的分析平台Spotfire中。
Oracle还提供了一个R解释器,该解释器使用Intel的数学库,因此在不改变R核心的情况下实现了更高的性能。
在撰写本文时,切换口译员是需要仔细考虑的问题。但在未来,它可能会变得更加常规。
有用的BLAS/基准资源
- 这个gcbd公司该包对跨多个不同BLAS库以及GPU实现的几个标准线性代数操作的性能进行了基准测试。它有一个极好的小插曲总结了结果。
- 布雷特·克拉默提供了ATLAS、OpenBLAS和“英特尔MKL BLAS”库的很好比较。他还描述了如何安装不同的库。
- 官方R手册部分在BLAS上。