《R语言入门与实践》学习笔记一
第一天:
1.在windows环境下下载和安装R和RStudio。
2.简单了解R包与R命令。
3.学会利用命令进行文件操纵。
4.学会简单的调试代码。
………………………………………………………………………………………
---------------------安装-----------------------
R包的维护工作由一个国际化可开发者团队负责,下载页面叫做The ComprehensiveR Archive Network,即CRAN(https://cran.r-project.org)。页面顶部有三个下载链接,分别对应:Windows,Mac和Linux。下载步骤为Download R for Windowsbase,然后打开新页面中单击顶端的第一个链接(类似于Download R for 3.0.3 for Windows),下载后安装程序即可。
RStudio是类似于word的R语言编写帮助工具,可以从网址http://www.rstudio.com/ide(需要翻墙)免费下载RStudio,只要单击Download RStudio即可。RStudio安装上之后需要选择已安装的R包。
----------------------R包与R命令-----------------------
R包的概念类似于C/C++中的库(library),一个R包就是一些有用的函数,帮助文档和数据集的集合。最常见的R包就是R基础包(BaseR),就是每次打开R之后,R默认加载的所有函数。这些函数构成了R的基石,是不需要加载任何R包就可以使用的。
要想使用其他的每个R包,必须先在计算机上安装R包,然后在当前R会话中加载它。安装R包最简单的方法是利用install.packages函数。打开R,在命令行键入一下命令进行下载和安装:
install.packages(“包名称”)#安装单个包
install.package(c(“ggplot2”,”reshape2”,”dplyr”))#安装多个包
然后输入以下命令加载R包:
library(包名称)
library的作用是在当前的R会话被关闭之前,该包中所有的函数,数据集和帮助文档都可以被拿来使用,在下一个会话中,虽然不必再安装该包,但是需要重新加载。想要查看当前R库中存储了那些R包,可以运行以下命令:
library()
更新R包:
updata.packages(“包名称”)
R自带了很多数据集,被储存在R基础包的datasets包中,输入以下指令查看每个数据集以及数据集简介:
help(ackage=“datasets”)
---------------------------文件操纵----------------------------
了解计算机上R的工作目录及位置:
getwd()
将某个文件夹设置位工作目录:
getwd(“绝对地址或相对地址”)
查看当前工作目录下所有文件:
list.files()
如果想要打开一个纯文本文件,可以使用read.table函数,其中第一个参数应该为代取文件名称(文件在工作目录中)或者代取文件的路径,第二个参数sep告诉read.table需要使用什么分隔符,如果未设置sep,则read.table函数会默认空格为分隔符,第三个参数header告诉函数是否将第一行作为变量名称而不是值如果是变量名称,则header=TRUE,第四个参数代表使用什么表示缺失信息:
poker<-read.table(“poker.csv”,sep=”,”,header=TRUE,na.strings=”.”)
使用skip告诉R在读取数据时忽略开头的一些行,nrow告诉R在读多少个数据行之后不再读取。
read.table(“poker.csv”,sep=”,”,header=TRUE,na.strings=”.”,skip=3,nrow=5)
只要将参数stringAsFactors设置为FALSE即可确保R在保存字符串数据时,不会强制将其转换为因子型,而是保留它的字符串类型。
更改全局设置来改变R将字符串转换为因子型的行为:
options(stringAsFactors=FALSE)#关闭
options(stringAsFactors=TRUE)#打开
读取CSV文件:
poker<-read.csv(“poker.csv”)
有一种特殊的文件,它的每一行都占用文件的一行,而每一列都开始于固定位置,这种类型的文件被称为固定宽度文件(fixed_width file),.fwf在R中读取fwf文件比普通文件多出一个widths参数,用来表示得是第i个元素表示第i个列的宽度:
poker<-read.fwf(“poker.fwf”,widths=c(10,7,6),header=TRUE)
打开网络文件:
poker<-read.csv(“http://.../../poker.csv”)
保存纯文本文件,第一个参数为要储存的R对象,第二个参数代表文件名或者绝对路径,row.names防止R在存储纯文本文档时将行名称存储为一列,即防止为每行加上行号(write函数无法创建新的文件夹):
write.csv(poker,”data/poker.csv”,row.names=FALSE)
压缩文件:
write.csv(poker,file=bzfile(“data/poker.csv.bz2”),row.names=FALSE)
R自带的三个用来压缩文件的辅助函数:
函数名 压缩文件类型
bzfile bzip2
gzfile gnu zip(zip)
xzfile xz压缩
R的read函数可打开任何一种压缩文本文件。
R本身提供了两种文件格式,分别是.RDS和.RData,RDS可以存储单个R对象,而RData文件可以存储多个R对象,但是.RDS的可再现性好:
打开.RDS文件:
saveRDS(a,file=”stuff.RDS”)
打开.RData文件:
load(“file.RData”)
保存RData文件:
save(a,b,c,file=”文件名或路径”)
保存.RDS文件
saveRDS(a,file=”stuff.RDS”)
将剪贴板中的数据读入R中:
read.table(“clipboard”)
-------------------------调试--------------------------
RStudio中完善了对错误代码的调试,其中主要包括traceback(追溯),browser(浏览),debug(调试),debugonce,trace(追踪),recover(恢复)。
E1 traceback
在命令行键入traceback(),traceback会反回一个调用栈,也就是被调用函数的有序列表,最顶层就是出错的函数,而且traceback显示了函数调用的整个调用顺序,揭示了无限循环错误。
E2 browser
利用browser函数可以使得R在运行时暂停,使你键入新的命令。要使用browser函数,只要将browser()添加到函数体的对应位置,然后保存改函数即可。此时控制台出现三个按钮:NEXT(执行下一行代码)Continue(继续执行直到结束) Stop(立即停止运行)。
E3 断点
断点就是可视化的添加browser函数,打开R脚本,找到想要添加browser的行,右键鼠标就会出现一个空心红点,断点添加成功。
E4 debug
debug函数的第一步就是在调试函数的第一行加入browser(),它的使用方法是debug(函数名),解除方法是undebug(函数名),利用isdebugged(函数名)判断函数是否处于调试状态。
E5 trace
trace函数将一个函数插入其他函数的任意位置,第一个参数表示带插入函数的名称,是一个字符串。第二个参数代表要插入函数的R表达式。第三个参数at=代表将表达式插入函数第几行。
trace(“sample”,browser,at=4)
在对某个函数完成trace调试之后,可以使用untrace将函数恢复原来状态:
untrace(sample)
E6 recover
recover提供的代码调试方式可以进入调用栈的任意层级,从而进入某函数运行时环境进行调试,输入对应栈编码进入函数环境,输入0推出调试:
fifth<-function()recover()
运行全局选项,R会在每次报错时进入recover()命令:
options(error=recover)
直到关闭当前R会话或者执行以下命令前都有效:
options(error=NULL)
-----------------------------注-------------------------------
1.本学习记录来自Garrett Grolemund先生所著《Hands-On Programming with R》(中文名R语言入门与实践)一书。
2.R包为R语言环境,需要第一个安装。
3.R包既有32位也有64位版本,两个版本都使用32位整数,它们计算时具有相同的精度,二者的区别在于内存管理方面分别使用了64位指针和32位指针,这代表这64位有更大的使用和搜索的内存空间。从经验上看32位要更快。
4.R包可以选择中文版本,但是RStudio输入中文会出现乱码。
5.许多R包并没有在CRAN上托管,如果想要安装这些R包,可以借助devtools这样一个R包。这个包提供了install_github,install_gitorious,install_bitbucket和install_url等函数来从其他安装源安装R包。
6.常用网址:
R包邮件列表:
https://stat.ethz.ch/mailman/listinfo/r-packages
R-bloggers博客:
RStudio下的实用R包列表:
CRAN归类R包: