R的数据读入与存储我按照数据类型分成两类介绍:
- 第一类是文本文件的读入与保存,常见的有txt、xlsx、csv、tsv…一般存放的是二维的数据表格。
- 第二类是R特有的文件格式的读入与保存,RData(rda)、rds…可用于存放R分析的data frame、List或者整个分析环境所有的变量。
文本文件的读入与保存
读入
R文本读入一般使用R base基础包中的read.table()函数
read.table(file, header = FALSE, sep = "", quote = "\"'",
dec = ".", numerals = c("allow.loss", "warn.loss", "no.loss"),
row.names, col.names, as.is = !stringsAsFactors, tryLogical = TRUE,
na.strings = "NA", colClasses = NA, nrows = -1,
skip = 0, check.names = TRUE, fill = !blank.lines.skip,
strip.white = FALSE, blank.lines.skip = TRUE,
comment.char = "#",
allowEscapes = FALSE, flush = FALSE,
stringsAsFactors = FALSE,
fileEncoding = "", encoding = "unknown", text, skipNul = FALSE)
#file 需要读入的文件在计算机中的绝对路径。
#header 默认为FALSE 即数据框的列名为V1,V2...,设置为TRUE时第一行作为列名。
#sep 字段分隔符。文件中每一行的值都由此字符分隔。如果sep = ""(read.table的默认值),分隔符为“空格”,即一个或多个空格、制表符、换行符或回车符。
#quote 引号字符集。用于指定 包围字符型数据的字符。默认情况下,字符串可以被 " 或 ’ 括起,并且两种情况下,引号内部的字符都作为字符串的一部分。
#fill 是否丢弃文件尾部的空行
#check.name 检查变量名在R中是否符合规定,不合规定的会强制修改。
#row.names 指定哪一行作为读入数据框的行名
#col.names 指定哪一列作为读入数据框的列名
#comment.char = “#” 默认情况下,read.table 用 # 作为注释标识字符,这一行就不会被读入。若数据中没有注释,则令comment.char=''可以加快读取速度。
na.strings = “NA” 指定什么样的字符表示值缺少
#dec 指定用于表示小数点的字符。
#as.is = !stringsAsFactors 字符向量是否转换成因子(仅仅这个功能),TRUE时保留为字符型
#skip = 0 跳过文件的前n行(skip = n)
#更多参数细节可在R中输入?read.table查看官方文档。
保存
R将数据框导出保存一般使用R base基础包中的write.table()函数
write.table(x, file = "", append = FALSE, quote = TRUE, sep = " ",
eol = "\n", na = "NA", dec = ".", row.names = TRUE,
col.names = TRUE, qmethod = c("escape", "double"),
fileEncoding = "")
#x 需要保存的变量的名字
#file 变量保存到计算机的具体文件名
#append 写入方法,是附加写入还是覆盖写入
#quote 引号字符集。数据内容是否需要用引号将每个单独括起来
#sep 字段分隔符。文件中每一行的值都由此字符分隔
#na 缺失数据用什么符号填充
#row.names 数据框的行名是否要一起保存
#col.names 数据框的列名是否要一起保存
#更多参数细节可在R中输入?write.table查看官方文档。
R特有的文件格式的读入与保存
- 一、RData(rda):捕捉 R 环境的快照(R 对象的储存仓库)
- RData 格式就如同 R 环境的快照,它包含工作空间中所有对象的状态,如数据框、列表、函数和模型。它的优势在于快速加载和保存整个 R 环境,且可以独立于 R 环境加载。(我的测试下RData和rda应该是相同的工作原理,都可以存储多个对象)
- 二、rds:二进制格式的 R 对象
- RDS 格式是 R 语言对象的二进制序列化格式。它只能存储一个对象。二进制格式使得 RDS 格式的文件更小,加载速度更快,且跨平台兼容,可以在不同的操作系统上加载和使用。
RData(rda) | rds | |
保存 | save() | saveRDS() |
读入 | load() | readRDS() |
区别 | 可以同时存储多个对象; | 以二进制存储,速度更快; 载入对象时可以重新命名 |
#创建两个变量
mtcars <- mtcars
iris <- iris
save(mtcars,iris,file = "./test1.RData") #可以同时存储多个对象到一个文件里
rm(mtcars,iris) #删除当前环境的变量
load("./test1.RData") #载入test1.RData文件
ls() #查看载入的结果
###############################################################################################
#创建一个变量
women <- women
saveRDS(women,file = "./test2.rds") #只能存储一个对象到文件里,但是以二进制格式存储
rm(women) #删除当前环境的变量
newname_women <- readRDS(file = "./test2.rds") #读入./test2.rds文件赋值给newame_women变量
ls() #查看载入的结果