Используя "fread", как удалить строку комментария из csv? - PullRequest
2 голосов
/ 08 апреля 2019

Мне нужно прочитать файл CSV, в котором есть несколько строк комментариев (начинаются с #) вместе со строками данных.Функция fread используется для чтения этого CSV-файла.

config <- fread("Configuration.csv")

CSV file snapshot

В этом файле число строк не фиксировано, их можно изменить.Как читать CSV без этих строк комментариев.

Заранее спасибо !!!

Ответы [ 2 ]

3 голосов
/ 08 апреля 2019

Вы можете попытаться очистить данные с помощью 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 голосов
/ 08 апреля 2019

обновленный ответ

Я предполагаю, что вы используете 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 )]
...