我有很多字符串文件(.str),我想将它们导入 R(循环文件)。问题是第一行既不是列名也不是矩阵的开头。它是注释行。最后一行同上。在这两行之间,站起来我要导入的矩阵。我该怎么做?
谢谢
如果要跳过文件中的第一行和最后一行,可以按如下方式进行。用于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
参数,并在导入后从数据框中删除无意义的行。
您可以将您的评论放在数据文件中的任何位置,就像您将评论放在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
选项更改注释字符。
readLines
如果将Hong Ooi 提供的方法与负索引结合使用,则可以跳过文件中的任意行。这是一个示例,它跳过了文件中的第 2-5 行,该文件具有标题但有许多注释/元信息行:
lines <- readLines('myfile.txt')
mytable <- read.table(text = lines[-c(2:5)], sep = '\t', header = T)