1

私は R 開発に不慣れで、既存のコードを変更する必要があります。print()具体的には、不要な連続したスペース文字を削除するように呼び出しを変更する必要があります。

パラメータを見つけてsanitize.text.function、カスタム関数を print() 関数に渡すことに成功しました。そして、それは私がする必要があることをします。そのコードは次のとおりです。

print(xtable(x,...),type="html",
      sanitize.text.function = function(s) gsub(" {2,}", "", s),...)

今私がやろうとしているのは、「匿名」/「インライン」関数コードを名前付き関数に抽出することです...

clean <- function(s) { gsub(" {2,}", "", s) }
print(xtable(x,...),type="html",sanitize.text.function = clean(s),...)

ただし、これを実行すると、次のようになります。

gsub(" {2,}", "", s) のエラー: オブジェクト 's' が見つかりません

関数を定義したいという欲求は 2 つあります。

  1. 他の場所で参照できる再利用可能なコード ブロックを作成する。
  2. gsub()必要に応じて、より多くの、または同様の実行を追加する機能

例えば、

clean <- function(s) { 
    gsub(" {2,}", "", s)
    gsub(">(.*?:)", "<span style=float:left>\1</span>", s)
}

print(xtable(x,...),type="html",sanitize.text.function = clean(s),...)
4

1 に答える 1

7

関数sanitize.text.functionを期待しますが、関数の代わりにの結果を渡します(引数が評価されます!)。したがって、探していたラムダ(名前のない)関数構造である引数を使用するか、再マップする必要がある場合は、どちらかを使用できます(後者は、明らかに、より複雑なものにのみ意味があります)。clean(s)sanitize.text.function=cleansanitize.text.function=function(x) clean(x)

于 2011-12-24T06:12:04.710 に答える