如何跳过我要导入的数据文件中的注释行,用R表示

时间:2013-07-05 09:22:10

标签: r matrix import line skip

我有很多字符串文件(.str),我想在R中导入它们(循环文件)。 问题是第一行既不是列名也不是矩阵的开头。它是注释行。同意最后一行。 在这两行之间,站起来我要导入的矩阵.. 我怎么能这样做?

THX

3 个答案:

答案 0 :(得分:5)

如果要跳过文件中的第一行,可以执行以下操作。使用readLines将文件读入字符向量,然后将其传递给read.csv

strs <- readLines("filename.csv")
dat <- read.csv(text=strs,             # read from an R object rather than a file
                skip=1,                # skip the first line
                nrows=length(strs) - 3 # skip the last line
                )

- 3是因为数据行数比文件中的文本行数少3:开头的1个跳过行,列标题的1行和1个跳过的行结束。当然,您也可以忽略nrows参数,并在导入后从数据框中删除无意义的行。

答案 1 :(得分:5)

您可以将评论放在数据文件中的任何位置,就像将评论放在R脚本中一样。例如,如果我有这样的data.txt

# comment 1
str1
str2
# comment 2
str3
# comment 3
str4
str5# comment 4
str6
str7
# comment 5

然后你不需要做任何事情来跳过评论:

> x<-read.table("data.txt", header=FALSE)
> x
    V1
1 str1
2 str2
3 str3
4 str4
5 str5
6 str6
7 str7
>

请注意,comment 4未被阅读。您可以使用#选项更改评论字符comment.char

答案 2 :(得分:0)

如果将Hong Ooi与负索引一起使用的readLines方法组合在一起,则可以跳过文件中任意位置的任意行。这是一个示例,它跳过包含标题但是注释/元信息的数行的文件中的第2-5行:

lines <- readLines('myfile.txt')
mytable <- read.table(text = lines[-c(2:5)], sep = '\t', header = T)