#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. Вы можете либо вставить символ обратной косой черты перед каждым символом пробела в строке поиска, либо заключить все это в двойные кавычки.