2016-07-10 4 views
1

私が面白いの出力で、ミスを犯しましたが、正しいコードは次のとおりです。R `dplyr`コード:` iris%>%dim(。)[1] `意味?

iris %>% dim(.)%>% .[1] 

間違っては以下のとおりです。

iris %>% dim(.)[1] 

与える:

[1] 5.9 5.0 

iris %>% dim(.)[1]で起こっていますか?

+1

これは、最初の列の5番目と150番目の観測値 – akrun

答えて

3

発現の効果は、寸法を使用することですがデータフレームの最初の列のエントリをサブセットするdimから返さ:

> dim(iris) 
[1] 150 5 
> iris[,1][c(150, 5)] 
[1] 5.9 5.0 

あなたがインデックスに「1」を除外した場合、あなたが見ることができます行150と5が返されること:magrittrドットデータセットのプロパティを取得し、呼ばれている関数の引数としてそれらを渡すために使用することができますので、

> iris %>% dim(.)[] 
    Sepal.Length Sepal.Width Petal.Length Petal.Width Species 
150   5.9   3.0   5.1   1.8 virginica 
5   5.0   3.6   1.4   0.2 setosa 

この動作があります。 magrittrドキュメントで

help("%>%", magrittr) 

二の目的 は、多くの場合、「LHS」のいくつかの属性またはプロパティがすることに加えて、「RHS」 コールで望まれるのドットを使用して'lhs'自体の価値、例えば行または列の数は です。 'rhs'コールでドットプレースホルダー を何回か使用するのは完全に有効ですが、ネストされた関数呼び出しの中で使用すると、動作は と少し異なります。特に では、プレースホルダがネストされた関数 コールでのみ使用されている場合、 'lhs'も最初の引数として配置されます。理由は です。これは、ほとんどのユースケースで最も読みやすい コードが生成されるためです。たとえば、 'iris%>サブセット(。、1:nrow(。)%% 2 == 0)'に相当するは、 'しかし、 は少しコンパクトです。

したがって、この場合には、部分集合「機能」([])はiris %>% dimからの出力と呼ばれています。