2017-01-13 11 views
1

У меня есть строка символов:R: оберните текст функции: вставка п автоматически после каждых 16 символов

str1 <- "aaaaaaaaaa aaaaaaaaaaaaaa aaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaa aaaaaaa aaa aaa" 
str1 
nchar(str1) 

Я хотел бы вставить \ п автоматически после каждых 16 символов, включая пробелы, чтобы создать текстовую функцию обертки для использования в графическом графике.

Я пробовал:

str2 <- strwrap(str1, width = 16) 
str2 

, но это не сработало

plot(1:10,main=str2) 
mtext(str2, side=1, line=0, outer=F,cex=1,col="blue") 

Кроме того, есть ли способ, чтобы разделить слова правильно и добавить дополнительные пробелы, где это необходимо, как и в надлежащей функции слова обруча. Благодарим вас за помощь.

+7

'GSUB ("({16}).", "\\ 1 \ п", str1)'. – nicola

+1

related http://stackoverflow.com/questions/34710597/justify-text-in-r – rawr

ответ

1

Мы можем попробовать это тоже:

str2 <- paste(sapply(seq(1, nchar(str1), 16), function(i) paste0(substring(str1, i, min(i + 15, nchar(str1))), '\n')), collapse='') 
str2 
#[1] "aaaaaaaaaa aaaaa\naaaaaaaaa aaaaaa\naaaaaaaaaa aaaaa\naaaaaaaaaaaa aaa\naaaa aaa aaa\n" 

gregexpr('\n', str2) # position of inserted newlines 
#[[1]] 
#[1] 17 34 51 68 81 
+0

Спасибо за отличное решение. Есть ли способ добавить дефис для сломанных слов? –

+1

Заменить пустую дефис сверху с помощью gsub –

+0

Большое спасибо. –