Найти строку на основе индекса - PullRequest
0 голосов
/ 09 ноября 2019

Я пытаюсь найти строку, которая идет после известной строки: string_n = 1 .... поэтому я пытаюсь определить индекс "n =", чтобы затем выяснить, какой это номер эксперимента (в этомДело 1). Как бы я это сделал? Пока это мой подход, но он не работает. Я получаю NA для exp_number:

library(stringr)

for (i in length(names)){

  pos_of_n = str_which(pattern = '=', names[i], fixed = TRUE)

  substring = names[I]

  exp_number = substring[pos_of_n[1]+1]

  exp_name <- paste("exp", toString(exp_number,width=NULL))

}

Ответы [ 2 ]

1 голос
/ 09 ноября 2019

Я предполагаю, что ваши данные похожи на строки ниже.

library(stringr)
strings <- c('exp n=1', 'exp n=2 more information...')

# Returns a matrix. First column is complete match, second the first
# set of parentheses, third the second set of parentheses -- which is
# the one we want.
exp_numbers <- str_match(strings, '(n\\=)(\\d+)')[,3]
# [1] "1" "2"
paste0("Exp", exp_numbers)
# [1] "Exp1" "Exp2"

# Using the data string you provided
strings <- c(' D:Maj_stats_n1_pooled2019-0918_screen_n=3_T_Template.csv')
exp_numbers <- stringr::str_match(strings, '(n\\=)(\\d+)')[,3]
labels <- paste0("Exp", exp_numbers)
labels
#> [1] "Exp3"
0 голосов
/ 10 ноября 2019

Вы можете использовать gsub

x <- c('D:Maj_stats_n1_pooled2019-0918_screen_n=3_T_Template.csv',
       'D:Maj_stats_n1_pooled2019-0918_screen_n=20_T_Template.csv')

gsub('.*n=(\\d+).*', 'exp \\1', x)
# [1] "exp 3"  "exp 20"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...