2012-07-23 110 views
1

我的文件末尾有四行空白行。blank.lines.skip = TRUE失败,并显示read.fwf?

> 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 

和四个空行。

+0

此外,请注意,您问这个问题的方式对于我们这些想要帮助的人来说可能是相当令人沮丧的。我们没有您想要阅读的文件,因此我们提供的任何帮助仅仅是猜测。这就是为什么我们强烈建议你提出你的问题[reproducible](http://stackoverflow.com/q/5963269/324364)。 – joran 2012-07-23 03:18:11

+0

我很欣赏你试图澄清你的问题。但是,无论发生什么问题,您的特定文件的存储方式都可能会有所不同,当您将内容复制到问题中时,这些内容会丢失。我们将需要文件本身。一个保管箱链接,也许?我们需要能够复制你在做什么_exactly_。 – joran 2012-07-23 03:29:12

+0

你介意看下面的答案吗? – 2012-07-23 04:32:44

回答

5

它看起来像你说得对,blank.lines.skip并不适用于read.fwf - 必须在代码挖掘找出原因,但(与blank.lines.skip指令一起)传递之前,read.fwf做文件的显著处理到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)特定列进行覆盖确实不够“聪明”。

相关问题