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