3

我正在编写一个函数来以 tex 格式编写自动表格。我遇到的一个问题是带有长字符串的表格。为了解决这个问题,我创建了一个将长字符串分成更多行的函数。我的函数在之前至少有字符的每个空格中中断len(它不会中断单词)。我想将此规则更改为:在下一个空格至少包含len字符的每个空格中插入(换句话说,我不希望包含多个len字符的“子字符串”,除非一个单词的字符数超过 10 个)。

 quebra <- function(text, len=30) {
  trim <- function(x) gsub('^ *|(?<= ) | *$', '', x, perl=TRUE)
  quebrado <- strsplit(trim(paste(text)),paste0('(?<=.{',len,'}) '), perl=T)
  tam <- max(sapply(quebrado, length))
  out <- sapply(quebrado, function(x, tam) x[1:tam], tam=tam)
  out[is.na(out)] <- ''
  out
 }

例子:

quebra('1234567890 123456789 123456789', 10)正在返回:

     [,1]                 
[1,] "1234567890"         
[2,] "123456789 123456789"

但我想要:

     [,1]                 
[1,] "1234567890"         
[2,] "123456789"
[3,] "123456789"

我认为应该可行,但我无法使其适应strsplit()格式。

4

1 回答 1

6

不要重新发明轮子。只需使用strwrap.

于 2013-03-20T14:24:19.703 回答