R удалить строку перед разделителем

У меня есть один из столбцов в кадре данных, и я хотел бы удалить часть строки перед 5-м разделителем "." и последнее "." для .txt и я не знаю, как это сделать.

Вход:

jhu-usc.edu_GBM.HumanMethylation450.6.lvl-3.TCGA-06-5415-01A-01D-1481-05.txt
jhu-usc.edu_BCD.HumanMethylation450.6.lvl-3.TCGA-06-5415-01A-01D-1482-05.txt
jhu-usc.edu_LGG.HumanMethylation450.6.lvl-3.TCGA-06-5415-01A-01D-1483-05.txt
jhu-usc.edu_LUAD.HumanMethylation450.6.lvl-3.TCGA-06-5415-01A-01D-1484-05.txt
jhu-usc.edu_LUAD.HumanMethylation450.6.lvl-3.TCGA-06-5415-01A-01D-1485-05.txt
jhu-usc.edu_BRCA.HumanMethylation450.6.lvl-3.TCGA-06-5415-01A-01D-1486-05.txt
jhu-usc.edu_GBM.HumanMethylation450.6.lvl-3.TCGA-06-5415-01A-01D-1487-05.txt
jhu-usc.edu_PRCA.HumanMethylation450.6.lvl-3.TCGA-06-5415-01A-01D-1488-05.txt

Желаемый результат:

TCGA-06-5415-01A-01D-1481-05
TCGA-06-5415-01A-01D-1482-05
TCGA-06-5415-01A-01D-1483-05
TCGA-06-5415-01A-01D-1484-05
TCGA-06-5415-01A-01D-1485-05
TCGA-06-5415-01A-01D-1486-05
TCGA-06-5415-01A-01D-1487-05
TCGA-06-5415-01A-01D-1488-05

Я пробовал: sapply(strsplit(as.character(df$V1), "."), '[', 1:5)

Пожалуйста посоветуй. Спасибо.


person Peter Chung    schedule 10.10.2017    source источник


Ответы (2)


Предполагая, что текст зафиксирован

sub(".*(TCGA[^.]+).*", "\\1", str1)
person akrun    schedule 10.10.2017

Если все они заканчиваются на .txt, вы можете сделать

sub(".+\\.([^.]+).txt", "\\1", as.character(df$V1))
person Andrew Gustar    schedule 10.10.2017