6

我正在尝试自动读取从另一个分析程序生成的文件。

标准输出通常为 6 列,由空格分隔,最后有回车符。只需在“read.table”中使用“strip.white = TRUE”即可很好地读取。

我遇到了一个问题,但是,如果将参数固定为常量,则 b/c 会将注释添加到行中。
添加“flush = TRUE”可以让我跳过这些偶尔的评论并阅读所有内容。

我想要做的是将这些注释(在给定文件中可能只出现一次)添加为第 7 列。

是否有允许我指定列数或其他方式来容纳这第 7 列的读入方法?

可以在这里找到一段数据

数据如下所示:

columns_1&2  column_3  column_4  column_6  column_6   column_7     
84:S 0:dorm  1.0000000 0.11E-005 0.9999979 1.0000021                           
85:p N:veg   1.0000000 0.0000000 1.0000000 1.0000000  Fixed               
86:p 0:dorm  0.260E-08 0.237E-05 -0.03E-05 0.46E-005
4

1 回答 1

11

如果您的所有列都像链接示例中的那样排列整齐(即,如果它是“固定宽度文件”),那么这是一个工作read.fwf()

df <- read.fwf(file = "http://dl.dropbox.com/u/54791824/SO_data_frag.txt", 
               widths = c(8, 7, 29, 15, 16, 16,1000))

head(df,4)
        V1      V2 V3           V4        V5       V6           V7
1    82:S  0:dorm   1 1.625420e-06 0.9999968 1.000003                      
2    83:S  0:dorm   1 1.083245e-06 0.9999979 1.000002                      
3    84:S  0:dorm   1 1.081771e-06 0.9999979 1.000002                      
4    85:p  N:veg    1 0.000000e+00 1.0000000 1.000000  Fixed   

编辑:或者,正如 Joran 在评论中指出的那样,您可以使用read.table()以下fill=TRUE选项:

df2 <- read.table(file = "http://dl.dropbox.com/u/54791824/SO_data_frag.txt", 
                  fill = TRUE, 
                   col.names=paste("column", 1:7, sep="_")
于 2011-12-28T01:55:19.170 回答