У меня есть символ vector
с несколькими строками, например,
"as.factor(p15) + index_magt+lag_kemner_pct+log_indb"
Я пытаюсь использовать gsub
, чтобы заменить «as.factor(p15) + index_magt» на «p15_magt», используя следующий код:
vector <- c("as.factor(p15) + index_magt+lag_kemner_pct+log_indb", "as.factor(p40) + index_magt+lag_kemner_pct+venstrepar_pct")
vector <- gsub("as.factor(15) + index_magt","p15_magt", vector)
Однако это дает следующий результат:
vector
[1] "as.factor(p15) + index_magt+lag_kemner_pct+log_indb"
Я также пробовал:
vector <- gsub("as\\.factor\\(15\\) \\+ index_magt","p15_magt", vector)
у кого-нибудь есть решение? Мне нужно, чтобы выражение точно соответствовало числу 15 в "as.factor(15)", а не просто использовало [[:alnum:]] для любого числа. Я мучаюсь некоторое время :/
Иногда вы просто делаете глупые ошибки. Спасибо за помощь!
Я думаю, вы только что пропустили «p» перед «15» в своем звонке gsub
:
vector <- gsub("as\\.factor\\(p15\\) \\+ index_magt","p15_magt", vector)
> vector
[1] "p15_magt+lag_kemner_pct+log_indb" "as.factor(p40) + index_magt+lag_kemner_pct+venstrepar_pct"
Вам нужно использовать экранирование:
x <- "as.factor(p15) + index_magt+lag_kemner_pct+log_indb"
gsub("as\\.factor\\(p15\\) \\+ index_magt", "p15_magt", x)
В качестве альтернативы используйте только sub
если, для каждой строки есть только одно совпадение; также вы не придется убегаете .
:
sub("as.factor\\(p15\\) \\+ index_magt", "p15_magt", x)
Вы используете
as\\.factor\\(15\\)
в шаблоне, но у вас естьas.factor(p15)
в тексте. Видитеp
? Если вы добавите его в шаблон, это сработает. Кроме того, чтобы соответствовать любому числу int, используйте[0-9]+
.