我正在编写一个以tex格式编写自动表格的函数。我遇到的一个问题是带有长字符串的表。为了解决这个问题,我创建了一个在更多行中打破长字符串的函数。我的函数在每个具有le 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"
我认为this应该有效,但我无法将其改编为strsplit()
格式。
答案 0 :(得分:6)
不要重新发明轮子。只需使用strwrap
。