#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 <- «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» - и в этом случае замените индексы новыми от 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
символом . здесь это не