2016-07-26 3 views
0

у меня есть файлы с похожим содержимымпропуска строки в чтение файлов с использованием рег ех

!software version: $Revision$ 
!date: 07/06/2016 $ 
! 
! from Mouse Genome Database (MGD) & Gene Expression Database (GXD) 
! 
MGI 

Я использую read.csv для чтения файлов. Но мне нужно пропустить строки с помощью!! в начале. Как я могу это сделать?

+1

Вы можете установить 'skip' параметр, но он просто принимает целое число строк, пропускаемых. Вы можете вычислить это число с помощью 'readLines' и' grep', если вы делаете это программно или много, но в противном случае, возможно, проще всего просто посмотреть на файл. – alistaire

+0

У меня есть несколько файлов, и это не согласовано во всех файлах. Иногда его 12, иногда его 45. Вот почему я не могу использовать skip – user1631306

+0

Вы можете использовать один из ответов от [этого вопроса] (http://stackoverflow.com/questions/27747426/how-to-efficiently-read-the- first-character-from-each-line-of-a-text-file), чтобы определить, какие строки начинаются с '!', а затем использовать аргумент 'skip'' read.csv' на основе этого. –

ответ

2

read.csv функция и read.table, что она основана на есть аргумент называется comment.char, который может быть использован для указания символа, который, если смотреть будет игнорировать остальную часть этой линии. Установив это на "!" может быть достаточно, чтобы делать то, что вы хотите.

Если вам действительно нужно регулярное выражение, лучший способ - прочитать файл, используя readLines (или аналогичную функцию), а затем применить регулярное выражение к результирующему вектору символьных строк, чтобы отказаться от нежелательных элементов (строк) затем передайте результат в аргумент text до read.table (или используйте текстовое соединение).

0

Чтобы вычислить первую строку, которая не начинается с !,

to_skip <- min(grep('^[^!]', trimws(readLines('file.csv')))) 

df <- read.csv('file.csv', skip = to_skip) 
Смежные вопросы