使用R中的write.table处理空白/缺失数据

时间:2016-06-30 22:12:04

标签: r

我有一个数据框,其中一些行有空白条目,例如使用玩具示例

Sample Gene RS Chromosome
1      A    rs1 10
2      B        X
3      C    rs4 Y

即。样本2没有rs#。如果我尝试使用以下方法将此数据框保存在文件中

write.table(mydata,file="myfile",quote=FALSE,sep='\t')

然后read.table('myfile',header=TRUE,sep='\t'),我收到错误,指出第2行中的条目数没有4个元素。如果我设置quote=TRUE,则表中会显示""条目。我正在尝试找出一种使用write.tablequote=FALSE创建表格的方法,同时为缺少条目的行保留空白占位符,例如2.

有一种简单的方法吗?我试图在NA=""中使用参数write.table(),但这并没有改变任何内容。

2 个答案:

答案 0 :(得分:1)

如果我的脚本数据框的结果有NA我总是替换它,一种方法是用数据框中的NA替换一些其他文本,告诉你这个条目在数据框中是NA - 特别是如果要将结果保存在csv /数据库或某些非-EN env

一个简单的脚本

replace_NA <- function(x,replacement="N/A"){
  x[is.na(x)==T]  <- replacement

}

sapply(df,replace_NA,replacement ="N/A" )

答案 1 :(得分:0)

您正在尝试重新发明固定宽度的文件格式。您请求的格式在每个实列之间都有一个空白列。虽然'utils'包有write.fwf,但我找不到read.fwf。获取请求输出的最简单方法是:

 capture.output(dat, file='test.dat')
# Result in a text file

  Sample Gene  RS Chromosome
1      1    A rs1         10
2      2    B              X
3      3    C rs4          Y

这主要使用print方法(在R REPL的末尾)为数据帧为你做间距。