在之前而不是之后使用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"))
fread
的话。不幸的是,它可能不太可移植,因为它依赖于shell命令。 - nicola我假设您正在使用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 )]
fread
,使用一些shell命令可能是唯一的方法。另一方面,使用shell命令是不好的做法,因为会使你的代码不具备可移植性。 - nicola
fread
没有适用于您目的的comment.char
参数。base
中的read.csv
和类似函数具有此功能。您可以使用read.table
或使用fread
读取所有行,然后再将其删除。 - nicola