前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >使用read.table读取数据时候不完全?

使用read.table读取数据时候不完全?

原创
作者头像
sheldor没耳朵
发布2024-11-01 13:40:57
发布2024-11-01 13:40:57
1540
举报
文章被收录于专栏:R基础

使用read.table读取数据时候不完全?

如题,读取同一个文件时候,发现用read.table的方式,数据读取不完全

代码语言:r
复制
rm(list=ls())
#方法一
tmp1 <- read.table("../genecard.txt",sep = "\t",head = T)
tmp1.1 <- read.table("../genecard.txt", sep = "\t", header = TRUE, quote = "")

dim(tmp1)#966   7
#判断是否有NA
anyNA(tmp1)#FALSE
#方法二
tmp2 <- data.table::fread("../genecard.txt",data.table = F)
dim(tmp2)#1585    7
anyNA(tmp2)#FALSE
#方法三
tmp3 <- read.csv("../genecard.txt",sep = "\t",head = T)
dim(tmp3)#1585    7

怎么找原因,试了是否NA、空值影响,结果都不是。交流群里问了其他人,也遇到过data.table吞数据的情况。原因竟然是数据中存在引号的原因

注:

文件中包含引号可能导致 read.table 读取时出现行数或内容的遗漏。这种情况通常发生在文件的字段中包含双引号 (") 或单引号 (') 时,如果引号没有正确闭合,read.table 可能会误解字段的边界,从而跳过某些行或解析错误。

指定 quote 参数read.table 默认会识别双引号或单引号为字符串的边界符号。如果不希望 read.table 将引号当作边界符号,可以将 quote 参数设置为空字符串 ("")。这样 read.table 会按原样读取引号,不会误解字段边界。

代码语言:r
复制
tmp1.1 <- read.table("../genecard.txt", sep = "\t", header = TRUE, quote = "")

以后用read.table读取文件的时候还是默认带上quote = ""参数吧,或者统一用fread函数读取文件。

使用 data.table::fread:fread 在处理包含引号的文件时通常更加宽松和灵活,可以尝试用 fread 读取文件。

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

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 使用read.table读取数据时候不完全?
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档