#r #string #extract
#r #строка #извлечение
Вопрос:
У меня есть символьная переменная. Мне нужно извлечь информацию из title=""
значения. В принципе, мне нужны все значения внутри ""
сразу после title=
.
Вот пример набора данных:
df <- data.frame(
id = c(1,2,3),
character = c('mrowamp;>amp;<mnamp;>2amp;<mnamp;>amp;<miamp;>hamp;<miamp;>amp;<m title="h r=2"amp;>amp;<mstyle',
'mrowamp;>amp;<mnamp;>2amp;<mnamp;>amp;<miamp;>hamp;<miamp;>amp;<m title="r 2h=h"amp;>amp;<mstyleamp;',
'mrowamp;>amp;<mnamp;>2amp;<mnamp;>amp;<miamp;>hamp;<miamp;>amp;<m title="h∙rleft(frac{2h}{2}right)"amp;>amp;<mstyleamp;gt'))
> df
id character
1 1 mrowamp;>amp;<mnamp;>2amp;<mnamp;>amp;<miamp;>hamp;<miamp;>amp;<m title="h r=2"amp;>amp;<mstyle
2 2 mrowamp;>amp;<mnamp;>2amp;<mnamp;>amp;<miamp;>hamp;<miamp;>amp;<m title="r 2h=h"amp;>amp;<mstyleamp;
3 3 mrowamp;>amp;<mnamp;>2amp;<mnamp;>amp;<miamp;>hamp;<miamp;>amp;<m title="h·rleft(frac{2h}{2}right)"amp;>amp;<mstyleamp;gt
Мой желаемый результат будет:
> df
id character
1 1 h r=2
2 2 r 2h=h
3 3 h·rleft(frac{2h}{2}right)
Комментарии:
1.
within(df, character <- gsub('title="([^"] )|.', '\1', df$character))
для этого вам не нужны дополнительные пакеты
Ответ №1:
Попробуйте это
library(dplyr)
df %>% mutate(character = sub(". title="(. )". ", "\1", character))
Ответ №2:
Вы должны использовать regex101 для создания подходящего регулярного выражения:
https://regex101.com/r/OFJhnQ/1
Затем вы можете использовать str_extract
для получения значения.
Или вы используете extract
функцию из tidyr:
df %>% tidyr::extract(character, "title", regex="title="(. )"")