R语言编程中的常见错误
有一些错误是R的初学者和经验丰富的R程序员都可能常犯的。如果程序出错了,请检查
以下几方面。
使用了错误的大小写。help()、Help()和HELP()是三个不同的函数(只有第一个是
正确的)。
忘记使用必要的引号。install.packages("gclus")能够正常执行,然而
Install.packages(gclulus)将会报错。
在函数调用时忘记使用括号。例如,要使用help()而非help。即使函数无需参数,仍
需加上()。
在Windows上,路径名中使用了\。R将反斜杠视为一个转义字符。
setwd("c:\mydata")会报错。正确的写法是setwd("c:/mydata")或
setwd("c:\\mydata")。
使用了一个尚未载入包中的函数。函数order.clusters()包含在包gclus中。如果还
没有载入这个包就使用它,将会报错
R的报错信息可能是含义模糊的,但如果谨慎遵守了以上要点,就应该可以避免许多错误
1.5 批处理
多数情况下,我们都会交互式地使用R:在提示符后输入命令,接着等待该命令的输出结果。
偶尔,我们可能想要以一种重复的、标准化的、无人值守的方式执行某个R程序。例如,你可能
需要每个月生成一次相同的报告,这时就可以在R中编写程序,在批处理模式下执行它。
如何以批处理模式运行R与使用的操作系统有关。在Linux或Mac OS X系统下,可以在终端
窗口中使用如下命令:
R CMD BATCH options infile outfile
其中infile是包含了要执行的R代码所在文件的文件名,outfile是接收输出文件的文件名,
options部分则列出了控制执行细节的选项。依照惯例,infile的扩展名是.R,outfile的扩
展名为.Rout。
对于Windows,则需使用
"C:\Program Files\R\R-3.1.0\bin\R.exe" CMD BATCH
--vanilla --slave "c:\my projects\myscript.R"
将路径调整为R.exe所在的相应位置和脚本文件所在位置。要进一步了解如何调用R,包括命令行
选项的使用方法,请参考CRAN(http://cran.r-project.org)上的文档“Introduction to R”。
中文版文档名为“R导论”。CRAN上的下载地址为http://cran.r-project.org/doc/contrib/Ding-R-intro_cn.pdf。
——译者注
1.6 将输出用为输入:结果的重用
R的一个非常实用的特点是,分析的输出结果可轻松保存,并作为进一步分析的输入使用。
让我们通过一个R中已经预先安装好的数据集作为示例阐明这一点。如果你无法理解这里涉及的
统计知识,也别担心,我们在这里关注的只是一般原理。
首先,利用汽车数据mtcars执行一次简单线性回归,通过车身重量(wt)预测每加仑行驶
的英里数(mpg)。可以通过以下语句实现:
lm(mpg~wt, data=mtcars)
结果将显示在屏幕上,不会保存任何信息。
下一步,执行回归,区别是在一个对象中保存结果:
lmfit
以上赋值语句创建了一个名为lmfit的列表对象,其中包含了分析的大量信息(包括预测值、
残差、回归系数等)。虽然屏幕上没有显示任何输出,但分析结果可在稍后被显示和继续使用。
键入summary(lmfit)将显示分析结果的统计概要,plot(lmfit)将生成回归诊断图形,
而语句cook
图。要在新的车身重量数据上对每加仑行驶的英里数进行预测,不妨使用predict(lmfit,
mynewdata)。
要了解某个函数的返回值,查阅这个函数在线帮助文档中的“Value”部分即可。本例中应
当查阅help(lm)或?lm中的对应部分。这样就可以知道将某个函数的结果赋值到一个对象时,
保存下来的结果具体是什么。
1.7 处理大数据集
程序员经常问我R是否可以处理大数据问题。他们往往需要处理来自互联网、气候学、遗传
学等研究领域的海量数据。由于R在内存中存储对象,往往会受限于可用的内存量。举例来说,
在我服役了5年的2G内存Windows PC上,我可以轻松地处理含有1000万个元素的数据集(100个
变量×100 000个观测)。在一台4G内存的iMac上,我通常可以不费力地处理含有上亿元素的数据
但是也要考虑到两个问题:数据集的大小和要应用的统计方法。R可以处理GB级到TB级的
数据分析问题,但需要专门的手段。大数据集的管理和分析问题留待附录F中讨论。
1.8 示例实践
我们将以一个结合了以上各种命令的示例结束本章。以下是任务描述。
(1) 打开帮助文档首页,并查阅其中的“Introduction to R”。
——————————
这里使用了Cook距离作为度量影响的统计量,详见第8章。——译者注
领取专属 10元无门槛券
私享最新 技术干货