【发布时间】:2018-06-21 22:55:16
【问题描述】:
我想使用 R read.table 函数将我的文件数据加载到 data.frame 中。数据以制表符分隔,没有丢失条目。不幸的是,我的数据之前的序言行数会有所不同。我可以很容易地将 Java/C/Perl 解决方案组合在一起;但是,我在 R 中不太确定。文件内容(在精简的模型中)看起来像:
##header stuff
##header stuff
##header stuff
#column names column names column names
data data data data data data
data data data data data data
data data data data data data
...
data data data data data data
我希望 read.table 包含“#column names 列名列名”行作为 data.frame 的列标题。
我可以手动关闭文件顶部并从标题中删除“#”;但是,我计划对数百个文件进行自动化处理。
编辑 文件中的标头信息也可以以 @ 或! 开头。
谢谢
【问题讨论】:
-
如果您总是有相同数量的标题行要忽略,您可以使用参数
skip和comment.char = ""来忽略“标题内容”并仍然允许解析列名。 -
谢谢莫里茨。不幸的是,我运行的每个文件的标题行数可能会发生变化。
-
我明白了;在这种情况下,可能使用
readLines逐行读取文件,根据一些正则表达式处理删除那些“标题内容”的行,然后使用strsplit将行拆分为列条目。 -
我过去曾使用
readLines、grep和正则表达式来完成此操作。但是如何做到这一点取决于您的数据集。 -
由于注释行可以以不同的符号开头,因此在使用 Mankind_008 answer 时应在
grep中使用pattern = '^#|^@|^!'(以及您在文件中标识的任何其他符号),这样应该可以。
标签: r