R语言与生信应用15-R语法-R文件操作3
2019-05-02 本文已影响63人
BioSi
R文件操作3
文本格式
-
dump
和dput函数的是文本格式,可以直接编辑,在文件出错时,可以恢复。 -
dump
和dput
保存了对象的metadata(R对象的属性信息),这降低了结果的可读性,但读入数据时,不需要在对该数据集进行额外的处理。 - 文本格式文件方便进行版本控制,git等命令只能追踪文本文件的改变。
- 文件格式用处更广泛,如果文本中出现错误,相比二进制文件,更容易被修复。
- 文本格式更符合Unix哲学
- 缺点:占用更多的空间(相比于二进制文件)
dput操作R对象
通过dput函数将R对象写入文件,使用dget
函数将文件读入R。
> y <- data.frame(a = 1, b = "a")
> dput(y)
structure(list(a = 1,
b = structure(1L, .Label = "a",
class = "factor")),
.Names = c("a", "b"), row.names = c(NA, -1L),
class = "data.frame")
> dput(y, file = "y.R")
> new.y <- dget("y.R")
> new.y
a b
1 1 a
dump函数操作R对象
dump函数可以同时打包多个R对象写入文件,可以使用source
函数将文件读回R。
> x <- "foo"
> y <- data.frame(a = 1, b = "a")
> dump(c("x", "y"), file = "data.R")
> rm(x, y)
> source("data.R")
> y
a b
1 1 a
> x
[1] "foo"
其他数据操作的函数
数据操作可以通过创建一个链接(其他语言称为文件句柄)来实现。
-
file
创建一个普通文件的链接 -
gzfile
创建一个gzip格式压缩文件的链接 -
bzfile
创建一个bzip2格式压缩文件的链接 -
url
创建一个读取网页的链接
文件链接
> str(file)
function (description = "", open = "", blocking = TRUE,
encoding = getOption("encoding"))
-
description
参数设置读取文件的名称 -
open
参数设置文件的操作权限- “r” 只读
- “w” 可写并初始化一个新文件
- “a” 追加
- “rb”, “wb”, “ab” 读、写、追加二进制格式文件
文件链接可以帮助用户更灵活地操作文件或外部对象,我们不用直接对该链接进行操作,R中的函数可以直接处理。
con <- file("foo.txt", "r")
data <- read.csv(con)
close(con)
等同于
data <- read.csv("foo.txt")
按行读取文件
> con <- gzfile("words.gz")
> x <- readLines(con, 10)
> x
[1] "1080" "10-point" "10th" "11-point"
[5] "12-point" "16-point" "18-point" "1st"
[9] "2" "20-point"
writeLines
读取字符串向量,将向量中每行对象按行写入文件。
readLines
在读取网页数据十分有用
> con <- url("http://www.baidu.com", "r")
> x <- readLines(con)
> head(x)
[1] "<!DOCTYPE html>" "<!--STATUS OK-->" "" ""
[5] ""
课程分享
生信技能树全球公益巡讲
(https://mp.weixin.qq.com/s/E9ykuIbc-2Ja9HOY0bn_6g)
B站公益74小时生信工程师教学视频合辑
(https://mp.weixin.qq.com/s/IyFK7l_WBAiUgqQi8O7Hxw)
招学徒:
(https://mp.weixin.qq.com/s/KgbilzXnFjbKKunuw7NVfw)