Использование grep с fread() для фильтрации строк с пробелами, содержащими строку

#r #fread

Вопрос:

Я пытаюсь импортировать огромный файл tsv (~6,8 ГБ) по частям, используя R fread() с grep для импорта строк, содержащих соответствующую строку в поле, а затем каким-либо образом манипулируя импортированными наборами данных. Однако соответствующая строка содержит пробел между двумя смежными словами, на что grep жалуется на то, что не находит файл/каталог второго слова после этого пробела. Мне интересно, как я могу использовать grep в fread() для сопоставления строк на основе строки, содержащей пробелы?

Вот моя команда для импорта

 counts_df <- fread(cmd = paste0("grep ", i, " rna_single_cell_read_count.tsv"), sep = 't', col.names = col_names) %>% as.data.frame()
 

где i = 'Heart Muscle' .

Ошибка, которую я получаю, заключается в следующем:

 grep: Muscle: No such file or directory
|--------------------------------------------------|
|==================================================|
Error in `

lt;-.data.frame`(`*tmp*`, Cell, value = "cell_") :
replacement has 1 row, data has 0

Комментарии:

1. Ошибка очень очевидна: вы передаете в grep несколько аргументов, первый из которых «Мускул», и grep ожидает, что первым аргументом будет файл. Заключите полное имя в кавычки.

2. Пожалуйста, предоставьте достаточно кода, чтобы другие могли лучше понять или воспроизвести проблему.

Ответ №1:

Вам следует очистить это поле перед сборкой команды grep. Вы можете либо вставить символ обратной косой черты перед каждым символом пробела в строке поиска, либо заключить все это в двойные кавычки.