Это то, что вы ищете?
plot_2 <-
Infil_Data2 %>%
split(.$Site_ID) %>%
map2(names(.), ~ggplot(.x, aes(Sqrt_Time.x, Cal_Vol_cm)) +
geom_point() +
labs(title = paste(.y)) +
theme(plot.margin = unit(c(1, 5, 1, 1), "cm")) +
annotation_custom(tableGrob(cbind(c("Alpha1", "n_ho", "A"),
c(.x$Alpha1[1],
.x$n_ho[1],
.x$A[1])),
rows = NULL),
xmin = unit(20, "npc"), xmax = unit(25, "npc"),
ymin = 0.05, ymax = 0.1))
(я исключил некоторые коды для слоев geom / другие аспекты внешнего вида графика, так как я не думаю, что они являются центральными заданный вопрос.)
Это работает на меня:
#!/usr/bin/ruby
$s = "foo\n\n\nbar\nbaz\n\n\nquux";
puts $s
$s.gsub!(/[\n]+/, "\n");
puts $s
Просто разделение и переобъединение строк дадут желаемый результат
>> "one\ntwo\n\nthree\n".split.join("\n")
=> "one\ntwo\nthree"
Править: Я просто заметил, что это заменит ВСЕ пробельные подстроки новыми строками, например.
>> "one two three\n".split.join("\n")
=> "one\ntwo\nthree"
Сначала проверьте, что это - то, что Вы хотите!
Необходимо соответствовать больше чем одной новой строке до бесконечной суммы. Ваш пример кода будет работать только с незначительной тонкой настройкой:
str.gsub!(/\n+/, "\n")
Например:
str = "this\n\n\nis\n\n\n\n\na\ntest"
str.gsub!(/\n+/, "\n") # => "this\nis\na\ntest"
Вы уверенный, что это не должен быть/\n\n\n/, "\n" это, что Вы, кажется, желаете в своем вопросе выше.
также, действительно ли Вы уверены, что это не делает новой строки окон "\r\n"?
Править: Дополнительная информация
На комментарий
"Количество новых строк может измениться. Различные строки имеют между 2 и 5 новыми строками".
если Вы только хотите совершить нападки, строки 2-5 пробуют это
/\n{2,5}/, "\n"
Просто вызов разделения также обрежет весь Ваш пробел.
Необходимо передать \n
разделять
>> "one ok \ntwo\n\nthree\n".split(/\n+/).join("\n")
=> "one ok \ntwo\nthree"
Ruby нужны обратные косые черты, которых оставляют по-другому, чем Вы обеспечили.
str.sub!("\\\\n+\\\\n","\\\\n")