数据的来源

  • 一般有五种
    005. 用R读取及导出数据 - 图1

R语言读取的格式

005. 用R读取及导出数据 - 图2

使用基础包(base)

也就是R 内置的数据读取与存储的函数。

数据读取一般两种情况:1)在R默认环境下。2)在其他目录下。

在默认工作目录下,直接在语句中输入文件名即可。

在其他目录下,则输入其所在位置的绝对路径。和终端指令不同的是,可以利用file.path() 使用”/“分隔每个目录。

005. 用R读取及导出数据 - 图3

  1. # Path to the hotdogs.txt file: path
  2. path <- file.path("data", "hotdogs.txt")

读取文件(flat data)

使用read.csv() 读取csv数据。

ps:可以通过 dir() 查看工作目录下的数据

005. 用R读取及导出数据 - 图4

  1. # Import swimming_pools.csv: pools
  2. pools <- read.csv("swimming_pools.csv")
  • 默认下,read.csv() 会将数据转化为factor 格式。
    通过设定stringsAsFactors(默认TRUE)调整。

或者直接在全局设定options(stringsAsFactors = F)

  1. # Import swimming_pools.csv correctly: pools
  2. pools <- read.csv("swimming_pools.csv", stringsAsFactors = FALSE)

相关参数

  1. header = T #使第一行作为列名,默认F
  2. row.names = 1 #使第一列作为行名
  3. comment.char = "!" #使! 开头内容不识别(注释掉),默认为#
  4. sep = "/" #指定分割符
  5. stringsAsFactors = F #默认T,F会使读取不识别字符串为因子。
  6. col.names = c("a","b","c") #指定读取的表格中的列
  7. colClasses = c("character",
  8. "numeric",
  9. "logical")) #指定读取的类型
  10. skip = 5 #读取表格略过第5行。
  11. n_max = 5 #选择前5行的内容。

其他参数

  1. col_types = "clid" #和colClasses差不多,c 代表字符串,l代表布尔值,i代表整数,d代表浮点型。

不同类型的文件

read.csv() 读取csv文件,comma-separated value

read.table() 读取txt 文件。

read.delim() 也可以读取csv 文件。

一般来说read.table() 最为强大,而read.csv(), read.delim() 作为补充。

导出数据

可以很简单将df 数据框以exp.csv名导出到工作目录下。

  1. write.csv(df,file="exp.csv")

txt 格式可以使用 write.table()

readr包

005. 用R读取及导出数据 - 图5

在基础包之上升级而来(便捷、智能)

使用data.table 包

data.table 使得导入table 类型文件更加方便。

fread函数

fread 是非常强大的读取table函数。

可以识别出如csv 文件是否文件第一行有列名称。

005. 用R读取及导出数据 - 图6

  1. # load the data.table package using library()
  2. library(data.table)
  3. # Import potatoes.csv with fread(): potatoes
  4. potatoes <- fread("potatoes.csv")
  5. # Print out potatoes
  6. potatoes

005. 用R读取及导出数据 - 图7

两个参数:drop&select

fread 函数中有drop 与select 两个参数。可以对数据内容进行筛选。

005. 用R读取及导出数据 - 图8

  1. # fread is already loaded
  2. # Import columns 6 and 8 of potatoes.csv: potatoes
  3. potatoes <- fread("potatoes.csv", select = c(6,8))
  4. # Plot texture (x) and moistness (y) of potatoes
  5. plot(potatoes$texture, potatoes$moistness)

ps:plot 可以进行简单作图。

005. 用R读取及导出数据 - 图9

fread() 与 read.csv() 区别

主要区别在于,fread 的输出结果包括 data.table 与data.frame,而read.csv() 包括tbl_tf, tbl, 和data.frame。

rio包

主要用法:

005. 用R读取及导出数据 - 图10

直接将文件名作为参数,就会自动识别文件格式并进行相关的处理。

练习题

4-1

  1. #1.读取ex1.txt
  2. ex1 <- read.table("ex1.txt", header = T)
  3. #2.读取ex2_B cell receptor signaling pathway.csv
  4. read.csv("ex2_B cell receptor signaling pathway.csv")
  5. #3.读取GSE32575_series_matrix.txt,赋值给gse。
  6. gse <- read.table("GSE32575_series_matrix.txt", comment.char = '!',
  7. row.names = 1, header = T)
  8. #4.描述gse的属性
  9. str(gse)
  10. #5.将gse导出为新的txt和csv文件。
  11. write.csv(gse,"test1.csv")
  12. write.table(gse,"test2.txt")
  13. #6.将gse保存为Rdata并加载。
  14. save(gse,file="test3.Rdata")
  15. load("test3.Rdata")
  16. #练习4-1:
  17. #1.读取complete_set.txt(已保存在工作目录)
  18. set <- read.table("complete_set.txt",header = T)
  19. # 2.查看有多少行、多少列
  20. dim(set)
  21. # 3.获取行名和列名
  22. colnames(set);rownames(set)
  23. # 4.导出为csv格式
  24. write.csv(set,"test_set1.csv")
  25. # 5.保存为Rdata
  26. save(set,file="test_set2.Rdata")
  27. # 6.加载class.Rdata,查看数据类型
  28. load("test_set2.Rdata");str(set)
  29. #高阶数据读取指南https://www.jianshu.com/p/4ea320c0dcc6