2014-01-16 2 views
1

У меня есть текстовые данные (mydata.txt), которые я хотел бы изменить.Анализ и переформатирование текстовых данных в R, чтобы добавить вкладку

mydata.txt:

241623..243414 product="Putative sulfate permease" 
complement(344599..354507) product="Alcohol dehydrogenase (EC 1.1.1.1)" 
tRNA 168479..169551 product="tRNA-Val-GAC" 

Мое намерение состояло в том, чтобы переместить часть каждой строки, начиная с «продуктом = ..» дальше от первой части текста с помощью табуляции (\ т), как следующим образом:

241623..243414 product="Putative sulfate permease" 
complement(344599..354507) product="Alcohol dehydrogenase (EC 1.1.1.1)" 
tRNA 168479..169551 product="tRNA-Val-GAC" 

Моя попытка до сих пор:

x <- sub("(^\\.)(\\product=\\S+)$","\\1", mydata) 
y <- sub("(^\\.)(\\product=\\S+)$","\\2", mydata) 

Все, что я получаю некоторые числовые значения в качестве вывода в каждом случае , Может кто-то мне помочь, пожалуйста? Благодарю.

+0

Хм. Каково было ваше регулярное выражение, которое должно совпадать? –

ответ

2

В случае, если вы хотите сделать это для каждого product= вы можете просто

library(stringr) 
x <- '241623..243414 product="Putative sulfate permease" 
     complement(344599..354507) product="Alcohol dehydrogenase (EC 1.1.1.1)" 
     tRNA 168479..169551 product="tRNA-Val-GAC"' 
str_replace_all(x, "product=", "\tproduct=") 

Это даст вам

241623..243414  product="Putative sulfate permease" 
complement(344599..354507)  product="Alcohol dehydrogenase (EC 1.1.1.1)" 
tRNA 168479..169551  product="tRNA-Val-GAC" 
+0

Привет, ребята, спасибо за коды. Я забыл упомянуть, что у меня есть тысячи строк этих текстов, и я хотел бы прочитать из файла. Я использовал read.delim для этой цели, но ни один из этих двух кодов не работал в этом контексте. Есть ли выход? – user27976

3

сделать некоторые тестовые данные, соответствующие вашему примеру:

test <- c(
    "241623..243414 product=\"Putative sulfate permease\"", 
    "complement(344599..354507) product=\"Alcohol dehydrogenase (EC 1.1.1.1)\"", 
    "tRNA 168479..169551 product=\"tRNA-Val-GAC\"" 
) 

Запустите функцию sub, чтобы добавить вкладку (\t):

result <- sub("\\s+(product=)","\t\\1",test) 

Результаты:

> cat(result[1]) 
241623..243414 product="Putative sulfate permease"> 

> cat(result[2]) 
complement(344599..354507)  product="Alcohol dehydrogenase (EC 1.1.1.1)"> 

> cat(result[3]) 
tRNA 168479..169551  product="tRNA-Val-GAC"> 
Смежные вопросы