使用“fread”,如何消除csv中的注释行?

问题描述 投票:2回答:2

我必须读取一个CSV文件,其中包含一些注释行(以#开头)以及数据行。 fread函数用于读取此CSV文件。

config <- fread("Configuration.csv")

CSV file snapshot

在此文件中,行数不固定,可能会更改。如何在没有这些注释行的情况下阅读CSV。

提前致谢!!!

r csv comments fread
2个回答
3
投票

您可以尝试使用grep之前清除数据,而不是之后:

config <- fread("grep -v '^#' Configuration.csv")

更新:

如果使用fread()的目的是仅将数据转换为data.table,则可以使用read.table()代替默认的comment.char =“#”,然后将结果转换为data.table:

config <- as.data.table(read.table(header = TRUE, "Configuration.csv"))

2
投票

updated answer

我假设您正在使用Windows ...如果是这样,您可以将结果从findstr提供给fread()。 来自orinal答案的数据保存到test.csv

data.table::fread( cmd = 'findstr "^[^#]" test.csv', sep = "\n", header = FALSE )

#                V1
#1:  line,with,data
#2: line2,with,data

findstr /b /v test.csv给出了相同的结果

在linux上,你可以(可能)将grep命令的输出传递给fread()

old answer

在处理只有一个文件时,这种说法不是很有帮助,但是当使用lapply()读取多个文件时,它会有所帮助

text = "line,with,data
#commentline,with,data
line2,with,data"

data.table::fread( text, sep = "\n", header = FALSE )[!grepl( "^#", V1 )]
© www.soinside.com 2019 - 2024. All rights reserved.