我必须阅读一个CSV文件,其中包含一些注释行(以#开头)以及数据行。 fread
功能用于读取此CSV文件。
config <- fread("Configuration.csv")
在此文件中,行数不固定,可能会更改。如何在没有这些注释行的情况下读取CSV。
预先感谢!
答案 0 :(得分:2)
我假设您使用的是Windows ...如果这样,则可以将结果从findstr到fread()
。
原始答案的数据将保存到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()
。
此解决方案在仅处理一个文件时不是很有帮助,但是在使用lapply()
读取多个文件时将很有帮助
text = "line,with,data
#commentline,with,data
line2,with,data"
data.table::fread( text, sep = "\n", header = FALSE )[!grepl( "^#", V1 )]
答案 1 :(得分:2)
您可以尝试在之前而不是之后使用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"))