разделить строку и заменить индексы

#r #string #gsub

#r #строка #gsub

Вопрос:

У меня есть такие правила

 rule <- "X[,14]<=-0.00479499999999999 amp; X[,14]<=-0.00490000000000002 amp; X[,14]>-0.00595499999999993 amp; X[,14]<=-0.00593499999999991 amp; X[,96]>0.000395000000000034 amp; X[,96]<=0.000859999999999972"
 
  1. мне нужно разделить правило по индексу

    правило 1 <- «X[,14]<=-0.0047 amp; X[,14]<=-0.0049 amp; X[,14]>-0.0059 amp; X[,14]<=-0.0059 правило
    2 <- X[,96]> 0.0003 amp; X[,96]<=0.0008»

  2. и в этом случае замените индексы новыми от 1 до 2

от 14,96 до 1,2

 rule1 <- "X[,1]<=-0.0047 amp; X[,1]<=-0.0049 amp;
          X[,1]>-0.0059 amp; X[,1]<=-0.0059  

rule2 <-  X[,2]>0.0003 amp; X[,2]<=0.0008"
 

Ответ №1:

Мы разделяем ‘правило’ на amp; ‘, затем извлекаем числовую часть с parse_number помощью to split , используя number в качестве группы, затем paste list элементы и, наконец, используем str_replace_all from stringr для замены индекса

 library(stringr)
v1 <- strsplit(rule, "\s*\amp;\s*")[[1]]

v2 <- trimws(sapply(split(v1, readr::parse_number(v1)), function(x)
          sub("\s*\amp;\s*$", "", paste(x, collapse=" amp; "))))
str_replace_all(v2, setNames(as.character(seq_along(v2)), names(v2)))
 

-вывод

 #[1] "X[,1]<=-0.00479499999999999 amp; X[,1]<=-0.00490000000000002 amp; X[,1]>-0.00595499999999993 amp; X[,1]<=-0.00593499999999991"
#[2] "X[,2]>0.000395000000000034 amp; X[,2]<=0.000859999999999972"           
 

Комментарии:

1. @mr.T извините, это основано на приведенном вами примере

2. @mr.T В примере в вашем сообщении строка была разделена n символом . здесь это не