使用 "fread",如何从 csv 中删除注释行?
Using "fread", how to eliminate comment line from csv?
我必须读取一个 CSV 文件,其中包含一些注释行(以 # 开头)以及数据行。 fread
函数用于读取此CSV文件。
config <- fread("Configuration.csv")
此文件中的行数不固定,可能会更改。如何在没有这些注释行的情况下阅读 CSV。
提前致谢!!!
更新答案
我假设您正在使用 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 )]
您可以尝试在之前而不是之后使用 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"))
我必须读取一个 CSV 文件,其中包含一些注释行(以 # 开头)以及数据行。 fread
函数用于读取此CSV文件。
config <- fread("Configuration.csv")
此文件中的行数不固定,可能会更改。如何在没有这些注释行的情况下阅读 CSV。
提前致谢!!!
更新答案
我假设您正在使用 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 )]
您可以尝试在之前而不是之后使用 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"))