По умолчанию poly
вычисляет ортогональные полиномы. Вы можете отключить ортогонализацию с помощью аргумента raw=TRUE
.
Обратите внимание, что формула имеет два появления: один раз с исходными именами переменных при подгонке регрессий, а затем в stat_smooth
с использованием общих имен переменных x
и y
. Но в остальном это должна быть та же формула, с raw=TRUE
.
library("tidyverse")
# Define/import your data here....
df_fits <- df_calibration %>%
group_by(substance) %>%
do(fit = lm(area ~ poly(dilution, 2, raw = TRUE), data = .)) %>%
broom::tidy(fit) %>%
select(substance, term, estimate) %>%
spread(term, estimate) %>%
# It is simpler to rename the coefficients here
setNames(c("substance", "c", "b", "a"))
# join parameters with sample data
df_samples <- left_join(df_samples, df_fits)
# calculate with general solution for polynomial 2nd order
df_samples <- df_samples %>%
mutate(dilution_calc = (b * (-1) + sqrt(b^2 - (4 * a * (c - area)))) / (2 * a))
my.formula <- y ~ poly(x, 2, raw = TRUE)
df_calibration %>%
ggplot(aes(x = dilution, y = area)) +
stat_smooth(method = "lm", se = FALSE, formula = my.formula) +
geom_point(shape = 17) +
geom_point(
data = df_samples,
aes(x = dilution_calc, y = area),
shape = 1, color = "red"
) +
facet_wrap(~substance, scales = "free")
Создано в 2019-03-31 пакетом Представить (v0.2.1) sup>
Если можно абсолютно гарантировать, что нет никаких угловых скобок в HTML кроме используемых, чтобы открыть и закрыть теги, это должно работать:
s%(>|\G)([^<]*?)($key)%$1$2<b>$3</b>%g
В целом Вы хотите проанализировать HTML в DOM и затем пересечь текстовые узлы. Я использовал бы Шаблон:: Совершенствуйте для этого:
#!/usr/bin/env perl
use strict;
use warnings;
use feature ':5.10';
use Template::Refine::Fragment;
my $frag = Template::Refine::Fragment->new_from_string('<p>Hello, world. <a href="http://foo.com/">This is a test of foo finding.</a> Here is another foo.');
say $frag->process(
simple_replace {
my $n = shift;
my $text = $n->textContent;
$text =~ s/foo/<foo>/g;
return XML::LibXML::Text->new($text);
} '//text()',
)->render;
Это производит:
<p>Hello, world. <a href="http://foo.com/">This is a test of <foo> finding.</a> Here is another <foo>.</p>
Так или иначе не анализируйте структурированные данные с регулярными выражениями. HTML не является "регулярным", это "контекстно-свободно".
Править: наконец, если Вы генерируете HTML в своей программе, и необходимо сделать преобразования как это на строках, "УР DOIN ЭТО НЕПРАВИЛЬНО". Необходимо создать DOM и только сериализировать его, когда все было преобразовано. (Можно все еще использовать TR, однако, через new_from_dom
конструктор.)
Следующий regex будет соответствовать всему тексту между тегами или за пределами тегов:
<.*?>(.*?)<.*?>|>(.*?)<
Затем можно воздействовать на который, как желаемый.