2017-11-02 8 views
0

私はいくつかのデータをシミュレートしようとしており、step関数を使用しています。まず、1000×101次元のデータフレームを生成します。データとCスタックの使用のシミュレーション

library(broom) 

    data_func <- function(n=1000*101) { 
     data <- matrix(rnorm(n),1000,101) 
     data.frame(data) 
    } 

それからフォワードステップワイズ選択によってモデルを選択するstepを使用し、選択されたモデルのF検定のp値を抽出する関数を作成します。

step <- function(d) { 
    sfit <- step(lm(X1 ~.,data=d)) 
    glance(sfit)$p.value 
} 

私は、このシミュレーションの100回の繰り返しからp値を抽出したいので、私は持っている:

pvalues_step <- raply(100,step(data_func())) 

しかし、私は得る:

Error: C stack usage 7969512 is too close to the limit 

は良い方法はありますこれをする?

+2

'step:'関数を 'package:stats'からオーバーライドします。あなたは再帰で終わるかもしれません。カスタムの 'step'関数に別の名前を使用してみてください。 – PhillipD

+1

それは恥ずかしいです!それは問題を解決したようです、ありがとう。 – user21359

答えて

2

問題は、私は、より詳細に何が起こっていたかを説明したいと思いますコメントで解決されたものの:

Rで、他のパッケージからカスタム関数には、ビルドイン機能や、それらの名前を与えることができますあなたのケースでは

mean <- function(x) {print("I am mean")} 

> mean(5) 
[1] I am mean 

をあなたはpackage:statsからstepの定義を上書き:警告されずに。また、stepの中にstepと呼んでいます。これは再帰と呼ばれます。 Rにおける再帰は、例えばhereで説明される。

データの量と再帰のレベルによっては、(ほぼ)フルスタックになることがあります。

関連する問題