前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >文件的读写20230204

文件的读写20230204

原创
作者头像
顾卿岚
发布2023-02-06 15:55:45
1.4K0
发布2023-02-06 15:55:45
举报

一、csv的打开方式

a)默认:excel

b)记事本

c)适用大文件:sublime

d)R语言 >read.csv(" ") 注意文件的位置,选择相对路径还是绝对路径

二、文件的读入与导出

(1)文件读入

1⃣️ 常用于读取csv格式:read.csv(" " )

2⃣️ 常用于读取txt格式: read.table(" " )

ps(相关读取文件代码的比较):

read.table(file, header = FALSE, sep = "", quote = "\"' ...). 默认没有标题,分隔符是空格 read.csv(file, header = TRUE, sep = ",", quote = "\" ...)。 默认有标题,分隔符是“,” read.csv2(file, header = TRUE, sep = ";", quote = "\" ...) 默认有标题,分隔符是“ ;” read.delim(file, header = TRUE, sep = "\t", quote = "\" ...) 默认有标题,分隔符是“\t”(制表符)

(2)文件导出

1⃣️ 导出csv格式: write.csv(要导出数据框的变量名, file=" example.csv"). example是自己设置的名称

2⃣️ 导出txt格式:write.table(要导出的变量名,file="example.txt")

⚠️注意事项:导出文件时命名最好不要与原文件相同,不然会覆盖,导致原始数据丢失

(3)特殊文件的保存和加载: Rdata

‼️Rdata保存的是变量信息,不是文件!!因此不能x=load("example.Rdata"),变量不能被赋值给其他变量。

保存:save(test,file="example.Rdata)

加载:load("example.Rdata")

总结:

1).R 是脚本文件

2).Rdata 是变量信息

3).Rproj 是包括路径

三、保留列名和行名

保留列名:header=T, 表格自带的列名会变成真正的列名。

ex1<-read.table("ex1.txt")
ex1<-read.table("ex1.txt")
ex1<-read.table("ex1.txt",header=T)
ex1<-read.table("ex1.txt",header=T)

保留行名:row.names=1,行名也会自动变成真正的行名

ex2 <- read.csv("ex2.csv")
ex2 <- read.csv("ex2.csv")
ex2 <- read.csv("ex2.csv",row.names = 1,check.names = F)
ex2 <- read.csv("ex2.csv",row.names = 1,check.names = F)

ps: check.names=F 使行名与原始一致。

⚠️注意事项:当使用row.names=1时,行名不允许重复

代码语言:javascript
复制
> rod = read.csv("rod.csv",row.names = 1)
Error in read.table(file = file, header = header, sep = sep, quote = quote,  : 
  duplicate 'row.names' are not allowed

> rod = read.csv("rod.csv")

> View(rod)

列名重复,故不能使用row.names=1
列名重复,故不能使用row.names=1

四、不完整表格的读入

代码语言:javascript
复制
> soft <- read.table("soft.txt") #报错是表格有一列没有值

Error in scan(file = file, what = what, sep = sep, quote = quote, dec = dec,  : 
  line 2 did not have 5 elements

报错显示:表格第二行没有五个元素,那为什么没有五个元素会报错呢?可以先用excel打开文件看一下

发现果然是从第二行开始第五列都没有数据
发现果然是从第二行开始第五列都没有数据
代码语言:javascript
复制
> soft <- read.table("soft.txt",header = T,fill = T)

通过搜索发现了fill=T 这个函数,可以在有缺失值的情况下正常读入文件。

但是从826行开始我们发现读入的数据与原表不符合。
但是从826行开始我们发现读入的数据与原表不符合。
原表(空出一列)
原表(空出一列)

因此可以得知,fill=T虽然可以读入文件,但是也会导致“问题文件”的读入错误,因为它的默认值是sep=" ",会把一整个空格认为也是分隔符,导致第五列的内容被错误的放入了空着的第四列。

代码语言:javascript
复制
>soft2 <- read.table("soft.txt",header = T,sep = "\t")
>View(soft2)

加上sep="\t",只会识别一个制表符作为分割,因此可以识别空列
加上sep="\t",只会识别一个制表符作为分割,因此可以识别空列

总结:用于读取/导出文件的R包

base包(常用):

read.table() read.csv() read.delim()

write.table() write.csv()

(以下读的速度比较快,适用于大文件)

readr包:

read_table() read_csv() read_tsv()

write_table() write_csv()

(看看read_csv的用法)

代码语言:javascript
复制
> library(readr)
> read_csv("ex2.csv")

发现read_csv给出了一些数据框的概况
发现read_csv给出了一些数据框的概况
发现数据类型也变成<dbl>双精度浮点数,保留了小数点一位
发现数据类型也变成<dbl>双精度浮点数,保留了小数点一位

data.table包:

fread()

1) 非常方便,可以准确读取一些“问题文件”,例如刚刚有缺失空列的soft.txt,最好带上参数 data.table=F,可以确保产生干净的数据框。

代码语言:javascript
复制
> soft_1<-data.table::fread("soft.txt",data.table = F)

(非常方便,不需要乱七八糟的参数,可以读出复杂的文件)

rio包:

1) import() 可以读入一些后缀不正确的包

eg:首先设置了一个txt文件并把后缀改成mp4,使用普通音频文件打开方式会失败。

分别使用read.table 和read.csv 读取,都可以读取但出现了warning
分别使用read.table 和read.csv 读取,都可以读取但出现了warning

接下来就可以使用import()函数!!

代码语言:javascript
复制
> import("xh.mp4")

Error: Format not supported  #但是直接import出现了Error,考虑需要加一个参数

代码语言:javascript
复制
> import("xh.mp4",format = " ")
Error: Format not supported   #课上小结老师开始使用的format参数设置为空格也报错了

> import("xh.mp4",format = "\t")
  
#但是使用"\t"就成功了
 V1         V2

 1 gjl 2018150012

 2 ljh 2017153034

代码语言:javascript
复制
> import("xh.mp4",format = ";")
   
V1         V2
1 gjl 2018150012

2 
ljh 2017153034

> import("xh.mp4",format = "|")
  
 V1         V2

 1 gjl 2018150012
 
2 ljh 2017153034
 
 > import("xh.mp4",format = ",")
  
  V1         V2

  1 gjl 2018150012

  2 ljh 2017153034

(根据帮助手册,发现好像";" "|" "," 都可以使用,但是会不会和我之前设置文档分割是空格有关,因此我又把文档的分隔换成";"

重新设置分隔为“;”
重新设置分隔为“;”

⚠️⚠️发现原本的分隔符确实可以原原本本的展现,由此可得format的参数可以为“,”(逗号),“|”(管道符),“;”(分号),“\t”(制表符)

2) import_list() 可以读取一个带有多个工作簿的表格文件

代码语言:javascript
复制
>a<-import_list("example.xlsx")
>a$sheet1  #可以通过$sheet读取这个表格文件的不同工作簿

3)export() 可以把一个由多个数据框组成的列表输出为带有多个工作簿的表格文件

ps:如果单个数据框导出,可以把后缀改成.csv.

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、csv的打开方式
  • 二、文件的读入与导出
    • (1)文件读入
      • read.table(file, header = FALSE, sep = "", quote = "\"' ...). 默认没有标题,分隔符是空格 read.csv(file, header = TRUE, sep = ",", quote = "\" ...)。 默认有标题,分隔符是“,” read.csv2(file, header = TRUE, sep = ";", quote = "\" ...) 默认有标题,分隔符是“ ;” read.delim(file, header = TRUE, sep = "\t", quote = "\" ...) 默认有标题,分隔符是“\t”(制表符)
    • (2)文件导出
      • (3)特殊文件的保存和加载: Rdata
        • 总结:
          • ps: check.names=F 使行名与原始一致。
          • 因此可以得知,fill=T虽然可以读入文件,但是也会导致“问题文件”的读入错误,因为它的默认值是sep=" ",会把一整个空格认为也是分隔符,导致第五列的内容被错误的放入了空着的第四列。
          • base包(常用):
          • (以下读的速度比较快,适用于大文件)
          • readr包:
          • data.table包:
          • rio包:
          • ⚠️⚠️发现原本的分隔符确实可以原原本本的展现,由此可得format的参数可以为“,”(逗号),“|”(管道符),“;”(分号),“\t”(制表符)
          • 2) import_list() 可以读取一个带有多个工作簿的表格文件
          • 3)export() 可以把一个由多个数据框组成的列表输出为带有多个工作簿的表格文件
      • 三、保留列名和行名
      • 四、不完整表格的读入
      • 总结:用于读取/导出文件的R包
      相关产品与服务
      文件存储
      文件存储(Cloud File Storage,CFS)为您提供安全可靠、可扩展的共享文件存储服务。文件存储可与腾讯云服务器、容器服务、批量计算等服务搭配使用,为多个计算节点提供容量和性能可弹性扩展的高性能共享存储。腾讯云文件存储的管理界面简单、易使用,可实现对现有应用的无缝集成;按实际用量付费,为您节约成本,简化 IT 运维工作。
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档