问题
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