我正在编写一个函数来编写tex格式的自动表.我遇到的一个问题是带有长字符串的表.为了解决这个问题,我创建了一个在更多行中打破长字符串的函数.我的函数在每个具有leat 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
}
Run Code Online (Sandbox Code Playgroud)
例:
quebra('1234567890 123456789 123456789', 10) 正在回归:
[,1]
[1,] "1234567890"
[2,] "123456789 123456789"
Run Code Online (Sandbox Code Playgroud)
但我想要:
[,1]
[1,] "1234567890"
[2,] "123456789"
[3,] "123456789"
Run Code Online (Sandbox Code Playgroud)
我认为这应该有效,但我无法使其适应strsplit()格式化.
| 归档时间: |
|
| 查看次数: |
124 次 |
| 最近记录: |