R使用write.table将dataframe存为txt时最后三列数据缺失如何解决
R write.table导出txt丢失列问题解决方案
- 先检查输出文件名是否正确:你当前代码里的输出文件名为
../data/FinalLongFormattxt,缺少后缀分隔符.,修正为../data/FinalLongFormat.txt后,确认你打开的是本次代码新生成的文件,而非之前生成的旧版本文件。 - 先在R环境中验证源数据最后三列的有效性,执行如下代码排查:
# 输出最后三列的前10行数据,确认源数据本身没有缺失 head(FinalLongFormat[, (ncol(FinalLongFormat)-2):ncol(FinalLongFormat)], 10) # 检查最后三列列名是否包含不可见字符、特殊符号 colnames(FinalLongFormat)[(ncol(FinalLongFormat)-2):ncol(FinalLongFormat)]
- 排查特殊字符导致的分隔错乱:如果最后三列内容包含制表符
\t、换行符\n/\r,会破坏txt的制表分隔结构,看起来像后面列缺失,替换特殊字符后重新导出即可:
# 全局替换所有列中的制表符、换行符为空格 FinalLongFormat <- as.data.frame(lapply(FinalLongFormat, function(col) { gsub("[\t\n\r]", " ", col) })) # 重新导出,显式指定不添加引号、编码为UTF-8 write.table(FinalLongFormat, file = "../data/FinalLongFormat.txt", sep = "\t", dec = ".", row.names = F, col.names = T, quote = F, fileEncoding = "UTF-8")
- 若上述方案无效,可以换用容错率更高的readr包导出:
# 未安装先执行:install.packages("readr") library(readr) write_delim(FinalLongFormat, file = "../data/FinalLongFormat.txt", delim = "\t", na = "", col_names = T)
内容的提问来源于stack exchange,提问作者Sverdo
相关产品推荐
相关产品推荐

