1

我的文件末尾有四个空行。

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

当我运行这段代码时,blank.lines.skip 参数被忽略。我的输出中仍然有空行。

该文件是:

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

最后四个空行。

4

1 回答 1

5

看起来你是对的,blank.lines.skip它不适用于read.fwf- 必须深入研究代码才能找出原因,但read.fwf在将文件(连同blank.lines.skip指令一起)传递给read.table. 但是,事后检测和删除全空行并不难。

例如:

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,]

回答您的其他问题(您将其作为答案发布,然后被版主删除;您通常应该通过编辑原始帖子或在必要时对问题发表评论,而不是发布答案来对您的问题进行必要的修改) :colClasses对于您在大多数列上使用自动检测,但对(a)特定列覆盖它,确实不够“聪明”。

于 2012-07-23T03:43:50.267 回答