前情回顾:
- 预告:“Steem 和 R 语言:跟大鹏学 R 语言”连载即将开始
- Steem 和 R 语言:跟大鹏学 R 语言(1)下载安装
- Steem 和 R 语言:跟大鹏学 R 语言(2)简单计算
- Steem 和 R 语言:跟大鹏学 R 语言(3)变量和向量
- Steem 和 R 语言:跟大鹏学 R 语言(4)作图和统计
- Steem 和 R 语言:跟大鹏学 R 语言(5)表白
- Steem 和 R 语言:跟大鹏学 R 语言(6)读取文件
本文选自《学 R:零基础学习 R 语言》(研究出版社,大鹏、李怡著,2018)第二章,有改动。
不习惯命令行的用户,可以通过下面的指令获取这个文件的路径(请在敲入时练习一下前面说过的“箭头快捷键“和“tab小助理”):
myfile1 <- file.choose()
在弹出的窗口中选择文件c盘下r4r文件夹里的co2.csv。
好了,现在我们看看myfile1的值是什么。在RStudio运行:
myfile1
## [1] "c:/r4r/co2.csv"
是刚才选取文件的路径。这是获取路径的方法之一,比较符合很多人喜欢鼠标选择文件的习惯,但比较麻烦,每次使用这个代码时都得点一次。一般来说,我们存放数据的路径是固定不变的,所以更常用的方法,是在代码里直接敲入文件路径:
myfile2 <- "c:/r4r/co2.csv"
myfile2
## [1] "c:/r4r/co2.csv"
跟鼠标选取文件的结果完全相同。
注意:
- 路径的名称前后要用引号(单双都行,但要成对儿),表示这是一个字符串。
- 文件路径中上下级文件夹之间的斜线必须是斜线(
/
)而不是反斜线(\
), Windows用户一定要注意!其中的道理我们暂不深究。
myfile2里存储的文件路径,并不是文件内容。R现在知道文件在哪里,却不知道里面是什么内容。现在,我们让 R 读取文件的内容。
mydata2 <- read.table(file = myfile2, header = TRUE, sep = ",")
mydata2
sep
参数表示数据列的分隔符,这里设置为逗号,表示读取逗号分隔的数据。
你也许会说,read.table()
括号里那么多东西,用起来也太复杂了吧?怎么记得住?对,谁都记不住,现在我们有请助理团的第二位成员隆重登场!只需要把光标放到代码read.table
的任何一个字符处,按键盘的F1键,RStudio此时会在右下面板显示帮助信息,有详细的解释和实例。好好读读帮助吧,以后你会发现,F1小助理是仅次于tab的常用操作。除了tab小助理和F1小助理外,以后我们会介绍更多的小助理跟你见面。
小贴士 2.1 R菜鸟入门三大法宝
- 第一法宝:助理!以F1和tab键为首的豪华助理团,简直就是身边的诸葛亮,可以随时方便地寻求帮助。
- 第二法宝:猎狗!就是搜索引擎。遇见问题不懂就上网搜,你会发现,早就有人提出类似的问题并解决了。
- 第三法宝:顾问!就是论坛。内事不决问统都(中文论坛),外事不决问爆栈(英文论坛)。
为了省事儿,我们可以用read.table()
的瘦身简化版read.csv()
函数,用来专门读取逗号分隔的.csv文件:
mydata2 <- read.csv(file = myfile2)
跟上一条指令的效果完全相同。到此为止,数据文件中的数据就被R读进了他的脑子里。mydata1和mydata2这种二维表格数据,叫做“数据框”。
你可能会觉得麻烦,怎么在Excel里双击一下就搞定的事,在R里边却这么麻烦?是的,R对数据的读入并非“傻瓜”操作,也许在读数据上R比Excel麻烦10倍,但只要读进去了,后面会省事百倍千倍。而且,如果需要读入千百个数据文件,那么配合后面讲的循环语句可以轻松搞定,而不必双击千百次。相信我们,磨刀不误砍柴工。
其实,上面的过程是一套分解动作,让我们容易理解读取数据的过程。实际应用时,只需一行代码:
mydata2 <- read.csv(file = "c:/r4r/co2.csv")
思考 2.1 细心的你也许会留意,本章开头有个write.csv()
函数,跟read.csv()
有什么关系?既然read.csv()
是read.table()
的瘦身版,那么会不会有个write.table()
函数呢?要弄清楚这些问题,请试试你的三大法宝。
在RStudio中,像ctrl+shift+n、tab和F1这样的快捷键操作还有很多。从RStudio菜单栏选择Tools – Keyboard Shortcuts Help,或者直接按alt+shift+k键,就会弹出一本快捷键魔法书。