blank.lines.skip = TRUE fails with read.fwf?

耗尽温柔 提交于 2019-12-11 10:55:16

问题


There are four blank lines at the end of my file.

> data=read.fwf("test2",head=F,widths=c(3,1,-3,4,-1,4),blank.lines.skip = TRUE)  
> data  

When I run this code, the blank.lines.skip argument is ignored. I still get blank lines in my output.

The file is:

x1     F          1890 1962  
x2                1857 1936  
x3                1900 1978  
x4                1902 1994  
x5        F       1878 1939 

and four blank lines at the end.


回答1:


It looks like you're right that blank.lines.skip does not apply to read.fwf -- would have to dig in the code to figure out why, but read.fwf does significant processing of the file before passing it (along with the blank.lines.skip directive) to read.table. However, it's not too hard to detect and remove all-blank lines after the fact.

For example:

cat("abc","def","ghi","","","",sep="\n",file="test3.dat")
read.table("test3.dat")  ## blank lines skipped (by default)
(x <- read.fwf("test3.dat",widths=c(1,1,1),blank.lines.skip=TRUE))
##     V1   V2   V3
## 1    a    b    c
## 2    d    e    f
## 3    g    h    i
## 4 <NA> <NA> <NA>
## 5 <NA> <NA> <NA>
## 6 <NA> <NA> <NA>
all_NA <- apply(x,1,function(z) all(is.na(z)))
x[!all_NA,]

To answer your other question (which you posted as an answer, which was then deleted by a moderator; you should generally add necessary modifications to your question by editing your original post, or by commenting on questions if necessary, rather than posting an answer): colClasses is indeed not "clever" enough for you to use automatic detection on most columns but override it for (a) specific column(s).



来源:https://stackoverflow.com/questions/11605909/blank-lines-skip-true-fails-with-read-fwf

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!