10

次の形式のデータがあります。

gen = function () sample.int(10, replace = TRUE)
x = data.frame(A = gen(), C = gen(), G = gen(), T = gen())

各行に、行内のすべての要素の合計を添付したいと思います (私の実際の関数はより複雑ですがsum、問題を示しています)。

dplyrがなければ、私は書くだろう

cbind(x, Sum = apply(x, 1, sum))

その結果:

   A C  G T Sum
1  3 1  6 9  19
2  3 4  3 3  13
3  3 1 10 5  19
4  7 2  1 6  16
…

しかし、これを dplyr で行うのは意外と難しいようです。

私はもう試した

x %>% rowwise() %>% mutate(Sum = sum(A : T))

しかし、結果は各行の列の合計ではなく、予期しないものであり、(私には) 説明がつきません。

私も試してみました

x %>% rowwise() %>% mutate(Sum = sum(.))

しかし、ここでは、全体.の単なるプレースホルダーです。当然ことながら、引数を指定しないことも機能しません (結果はすべてです)。言うまでもなく、これらのバリアントはいずれも なしでは機能しません。 x0rowwise()

(必ずしも dplyr でこれを行う必要があるわけではありませんが、(a) コードをできるだけ統一したいので、異なる API 間を移動することは役に立ちません。(b) 期待していますいつの日か、dplyr でそのようなコマンドを自動的かつ無料で並列化できるようになります。)

4

3 に答える 3

3

これはあなたが望むことをしますか?

Data %>%
   mutate(SumVar=rowSums(.))
于 2015-01-22T18:01:30.533 に答える