私は以下のサンプルフォーマットのdata.tableを持っています。data.tableの各行に異なる複数引数の関数を適用するにはどうすればよいですか?
dt <- data.table(l = c("apple","ball","cat"),
m = c(1,2,3),
n = c("I ate apple", "I played ball", "cat ate pudding"))
Iパターンが他の列(l
)から来ると、各行の列(n
)にsub
を適用します。どうすればいい?
私が探していますが出力され、
l m n o
1: apple 1 I ate apple I ate
2: ball 2 I played ball I played
3: cat 3 cat ate pudding ate pudding
私はdata.table内代入演算子とアプローチmapply(do.call, list(sub), ...)
を使用してみましたがsub
(パターン、交換、文字列)の引数をする必要がありますdo.call
のネストされたリストと私はこれを正しく書く方法に固執しています。
なぜ 'dt [、Map(sub、l、 ''、n)]'だけではないのですか?編集:それは私に名前付きのベクトル/リストを与えるので、私たちが実際に望むのはリスト 'dt [、o:=(Map(sub、l、 '、n))]]に戻り値をラップすることです。 – Shape
@ Shape君は!私のアプローチは今や不必要に複雑に思えます。私は、「サブ」の代わりに、私は別個の機能のリストを持つことができる方法を考え出していました。あなたのコードは私の場合でも仕事をします。回答として投稿したい場合は、先に進んでください。 – Naumz
@Shape投稿することに同意します。私は 'dt [、mapply(sub、sprintf("?%s? "、l)、" "、n、USE]と一緒に行きます。NAMES = FALSE)] ' - 名前の問題を処理します。パターンにはスペースが含まれている可能性があります(OPはおそらく削除したいと考えています)。 – Frank