如题,读取同一个文件时候,发现用read.table的方式,数据读取不完全
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
会按原样读取引号,不会误解字段边界。
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 删除。