適用機能の使用方法について学習しようとしていますが、このチュートリアルに出くわしました: http://nsaunders.wordpress.com/2010/08/20/a-brief-introduction-to-apply-in-r/明確で簡潔に思えますが、すぐに問題が発生します。適用を示すために彼らが与える最初の例は次のとおりです。
> # create a matrix of 10 rows x 2 columns
> m <- matrix(c(1:10, 11:20), nrow = 10, ncol = 2)
> # mean of the rows
> apply(m, 1, mean)
[1] 6 7 8 9 10 11 12 13 14 15
これは非常に基本的なようですが、試してみようと思いました。ここに私の結果があります:
> # create a matrix of 10 rows x 2 columns
> m <- matrix(c(1:10, 11:20), nrow = 10, ncol = 2)
> # mean of the rows
> apply(m, 1, mean)
Error in FUN(newX[, i], ...) : unused argument(s) (newX[, i])
言うまでもなく、私はこれで迷子になりました...
さらに詳しい情報を提供するために、チュートリアルで提供されている別の例を試したところ、正しい結果が得られました。この場合の違いは、関数が適用関数で具体的に記述されていることです。
apply(m, 1:2, function(x) x/2)
[,1] [,2]
[1,] 0.5 5.5
[2,] 1.0 6.0
[3,] 1.5 6.5
[4,] 2.0 7.0
[5,] 2.5 7.5
[6,] 3.0 8.0
[7,] 3.5 8.5
[8,] 4.0 9.0
[9,] 4.5 9.5
[10,] 5.0 10.0
sessionInfo() の出力は以下のとおりです。
R version 2.15.3 (2013-03-01)
Platform: x86_64-apple-darwin9.8.0/x86_64 (64-bit)
locale:
[1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8
attached base packages:
[1] stats graphics grDevices utils datasets methods base
loaded via a namespace (and not attached):
[1] tools_2.15.3
そして、競合の出力 (詳細 = TRUE)
$.GlobalEnv
[1] "edit" "mean"
$`package:utils`
[1] "edit"
$`package:methods`
[1] "body<-" "kronecker"
$`package:base`
[1] "body<-" "kronecker" "mean"