У меня есть большая таблица данных, где я хочу проверить, присутствует ли 103a_foo
. Однако имена файлов в большой таблице они написаны по-разному, поэтому я должен использовать регулярное выражение.Найти первое совпадение подстроки в столбце больших данных.table
dt = structure(list(myID = c("86577", "34005","34005",
"194000", "30252", "71067"),
filename = c("/scratch/tmpdir/12a_foo.mzXML.gz",
"/scratch/tmpdir/103b_foo.XML.gz", "/scratch/tmpdir/103a_foo.XML.gz",
"/scratch/tmpdir/103a_foo.XML.gz",
"/scratch/tmpdir/100b_foo.XML.gz", "/scratch/tmpdir/108a_foo.XML.gz")),
class = c("data.table", "data.frame"),
row.names = c(NA, -5L),
.Names = c("myID", "filename"))
В качестве выхода я хочу индекс 3, так как это первый раз. Я бы использовал grep('103a_foo', dt$filename)[1]
, но я хочу, чтобы поиск останавливался при первом вступлении, так как таблица большая (10 миллионов строк).
Я сомневаюсь, что 103a_foo является реальным регулярным выражением. –
@ WiktorStribiżew OP не дает никаких указаний на то, что она действительно нуждается в регулярном выражении. На основе ее профиля она могла бы искать определенную последовательность букв TACG. – Roland
См. Http://gallery.rcpp.org/articles/boost-regular-expressions/, если вы хотите использовать Rcpp для этого. – Roland