我正在编写一个函数以tex格式编写自动生成的表。我遇到的一个问题是带有长字符串的表。为了解决这个问题,我创建了一个函数,该函数可以在更多行中打破长字符串。我的函数会在每个前面都带有至少len个字符的空格中打断(它不会打断单词)。我想将此规则更改为:切入每个空格,下一个空格至少包含len字符(换句话说,我不希望'substrings'包含超过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"

我认为this应该可以工作,但是我无法使其适应strsplit()格式。

最佳答案

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

10-07 12:12