У меня есть несколько строк в этом формате. Сепаратор - тире (-
), и каждая «вещь» между ними является маркером.Замена шаблонов в строке
string <- "FA-I2-I2-I2-EX-I2-I3-FA-I1-I2-TR-I1-I2-FA-I3-I1-FAFANR-I3-I2-TR-I1-I2-I1-I2-FA-I2-I1-I3-FAQU-I1-I2-I2-I2-NR-I2-I2-NR-I1-I2-I1-NR-I3-QU-I2-I3-QUNR-I2-I1-NRQUQU-I2-I1-EX"
Я хочу, чтобы идентифицировать случаи, где маркеры, содержащие букву «Я» происходит в строке (т.е. маркеры I1, I2, I3 и). Затем я хочу заменить те, у которых нет разделителей. Например, в самом начале строки должно быть преобразовано следующим образом:
FA-I2I2I2-EX
Поэтому в основном все, что я хочу сделать, это удалить все черточки между маркерами, содержащих «I».
Вот несколько запутанным решение:
string1 <- gsub(string, pattern = "I1", replacement = "ZI1Z")
string2 <- gsub(string1, pattern = "I2", replacement = "ZI2Z")
string3 <- gsub(string2, pattern = "I3", replacement = "ZI3Z")
string4 <- gsub(string3, pattern = "Z-Z", replacement = "")
string5 <- gsub(string4, pattern = "Z", replacement = "")
, который дает:
"FA-I2I2I2-EX-I2I3-FA-I1I2-TR-I1I2-FA-I3I1-FAFANR-I3I2-TR-I1I2I1I2-FA-I2I1I3-FAQU-I1I2I2I2-NR-I2I2-NR-I1I2I1-NR-I3-QU-I2I3-QUNR-I2I1-NRQUQU-I2I1-EX"
Есть ли более элегантный способ достичь этого?
два шага, возможно, лучший способ 'string1 <- gsub ('I (\\ d)', 'ZI \\ 1Z', string); gsub ('Z-Z | Z', '', string1) ' – rawr