文字列を指定した位置で改行する方法

文字列を指定した位置で改行する方法です。

始めに例として 文字列「01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20」 を “10” の直後、先頭から30文字目(3 × 10)で改行します。

改めて文字列を作成します。

library(dplyr)
(string <- seq(20) %>% formatC(width = 2, flag = "0") %>% paste0(collapse = " "))
[1] "01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20"

関数 stri_sub {stringi} を利用します。

library(stringi)
packageVersion("stringi")
[1] '1.7.12'

引数 from に改行したい場所(先頭からの文字数)、to にその1つ前を指定します。

stri_sub(str = string, from = 30, to = 29) <- "\n"
string
[1] "01 02 03 04 05 06 07 08 09 10\n 11 12 13 14 15 16 17 18 19 20"

10 の後ろ、先頭から30文字目に 改行記号 \n が挿入されています。

例えば以下のように、グラフタイトルの改行に利用できます。

始めに改行させない場合。

改行させたい文字列( plottitle )は以下の通りとします。

plottitle <- "x軸に一様分布から、y軸に正規分布からランダムに発生させた20組のサンプルデータ"
n <- 20
x <- runif(n = n, min = -5, max = 5)
y <- rnorm(n = n)
library(ggplot2)
g <- ggplot(mapping = aes(x = x, y = y, col = (x > 0 & y > 0))) +
  geom_point() +
  geom_hline(yintercept = 0) +
  geom_vline(xintercept = 0)
g + labs(title = plottitle)
Figure 1

続いて改行させる場合。

stri_sub(str = plottitle, from = 25, to = 24) <- "\n"
g + labs(title = plottitle)
Figure 2

タイトルが改行されています。

以上です。