3

自動テーブルをtex形式で書き込む関数を書いています。私が抱えている問題の 1 つは、長い文字列を持つテーブルです。これを解決するために、長い文字列をより多くの行に分割する関数を作成しました。私の関数は、前に少なくとも文字があるすべてのスペースでlen壊れます(単語を壊しません)。このルールを次のように変更します: 次のスペースに少なくともlen文字が含まれるすべてのスペースで区切ります (つまり、単語が 10 文字を超える場合を除いて、文字を超える「部分文字列」は必要ありませんlen)。

 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 に答える