R语言write.table指定col.names=FALSE后read.delim读入仍出现表头问题
问题原因
read.delim() 函数的默认参数为 header = TRUE,会自动将文件的第一行内容识别为列名,这就是你写入时未输出表头,但读取时丢失第一行数据、第一行内容被转为列名的核心原因。同时你使用的分隔符为分号,和read.delim()默认的制表符分隔不匹配,读取时也需要显式指定分隔符参数。
解决方案
方案1:读取时显式关闭表头识别
读取时添加header = FALSE参数,同时指定分隔符为分号,即可完整读取全部21行数据,列名会默认生成V1、V2...格式:df <- read.delim("mytxtout.txt", sep = ";", header = FALSE)如果需要自定义列名,读取完成后手动赋值即可:
colnames(df) <- c("id", "num1", "num2", "index1", "index2", "index3", "type")方案2:写入时保留表头(适合文件需反复读取/共享的场景)
如果不想每次读取都额外添加参数,可以在写入时将col.names参数设为TRUE,这样文件自带表头,读取时使用默认参数也不会出现行丢失问题:# 写入代码调整 write.table(trans_sequence, file="mytxtout.txt", sep=";", col.names = TRUE, row.names = FALSE, quote = FALSE) # 读取时无需额外加header参数 df <- read.delim("mytxtout.txt", sep = ";")
内容的提问来源于stack exchange,提问作者Cameo Kim
相关产品推荐
相关产品推荐

