6

適用機能の使用方法について学習しようとしていますが、このチュートリアルに出くわしました: 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" 
4

1 に答える 1

2

他の人が特定したように、それはおそらくあなたが競合しているためですmean。何か (関数、オブジェクト) を呼び出すと、R はそれが見つかるまで検索パスをたどります (見つからない場合、R はそれに応じて文句を言います)。

> search()
[1] ".GlobalEnv"        "tools:RGUI"        "package:stats"    
[4] "package:graphics"  "package:grDevices" "package:utils"    
[7] "package:datasets"  "package:methods"   "Autoloads"        
[10] "package:base"

R にかなり慣れていない場合は、特に指定しない限り、関数を作成するときに、通常は".GlobalEnv". meanR は先に進む前に最初にそこを調べるので、一般的な関数 ( 、plot、 など)と競合しないように、関数に賢明な名前を付けることがかなり重要summaryです。

ときどきクリーンなセッションから始めることをお勧めします。デバッグ フェーズでは、変数に名前を付けxたりy(名前は有益ではなく便宜上選んだものです... 結局のところ、私たちはただの人間です)、予想外に問題が発生する可能性があります。ワークスペースがかなり混雑している場合、競合の可能性が高くなるため、(a) 名前を慎重に選択し、(b) 復元せずに再起動することをお勧めします。

于 2013-04-14T02:16:31.333 に答える