plyr、ddplyを理解する方法を学ぶ 質問する

plyr、ddplyを理解する方法を学ぶ 質問する

私は、さまざまな変数や関数を試して結果を確認しながら、plyr の機能とその仕組みを理解しようとしてきました。そのため、具体的な解決策の回答よりも、plyr の仕組みの説明を求めています。ドキュメントを読みましたが、初心者の私にはまだ理解できません。

いくつかのデータと名前:

mydf<- data.frame(c("a","a","b","b","c","c"),c("e","e","e","e","e","e")
                  ,c(1,2,3,10,20,30),
                  c(5,10,20,20,15,10))
colnames(mydf)<-c("Model", "Class","Length", "Speed")
mydf

質問 1: 要約構文と変換構文

次のように入力すると:ddply(mydf, .(Model), summarise, sum = Length+Length)

次のような結果になります:

`Model ..1
1     a   2
2     a   4
3     b   6
4     b  20
5     c  40
6     c  60

次のように入力すると、ddply(mydf, .(Model), summarise, Length+Length)同じ結果になります。

ここで、変換を使用する場合:ddply(mydf, .(Model), transform, sum = (Length+Length))

次のような結果になります:

  Model Class Length Speed sum
1     a     e      1     5   2
2     a     e      2    10   4
3     b     e      3    20   6
4     b     e     10    20  20
5     c     e     20    15  40
6     c     e     30    10  60

しかし、最初の要約のように述べると、ddply(mydf, .(Model), transform, (Length+Length))

  Model Class Length Speed
1     a     e      1     5
2     a     e      2    10
3     b     e      3    20
4     b     e     10    20
5     c     e     20    15
6     c     e     30    10

では、「sum ="」を追加するとなぜ違いが生じるのでしょうか?

質問 2: なぜこれらは機能しないのでしょうか?

ddply(mydf, .(Model), sum, Length+Length)#関数 (i) のエラー: オブジェクト 'Length' が見つかりません

ddply(mydf, .(Model), length, mydf$Length) #Error in .fun(piece, ...) : 

'length'に渡される引数は2つで、1つが必要です

これらの例は、私が plyr の使い方を根本的に理解していないことを示すためのものです。

どのような回答や説明でも歓迎します。

ベストアンサー1

R の機能ツールがどのように動作するかを「視覚化」するのが難しい場合は、単一のインスタンスをブラウザーで確認するのが最も簡単だとわかりました。

ddply(mydf, .(Model), function(x) browser() )

その後、xリアルタイムで検査すると、すべてが理解できるはずです。その後、関数を x でテストし、機能する場合は成功です (他のグループ化が最初の x と異なる場合を除く)。

おすすめ記事