3

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

谢谢

4

3 回答 3

6

如果要跳过文件中的第一行最后一行,可以按如下方式进行。用于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参数,并在导入后从数据框中删除无意义的行。

于 2013-07-05T11:53:54.580 回答
6

您可以将您的评论放在数据文件中的任何位置,就像您将评论放在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选项更改注释字符。

于 2015-07-28T07:01:18.630 回答
0

readLines如果将Hong Ooi 提供的方法与负索引结合使用,则可以跳过文件中的任意行。这是一个示例,它跳过了文件中的第 2-5 行,该文件具有标题但有许多注释/元信息行:

lines <- readLines('myfile.txt')
mytable <- read.table(text = lines[-c(2:5)], sep = '\t', header = T)
于 2017-06-16T13:57:04.150 回答