最近、遺伝的プログラミングに使用する言語としてRを実験し始めました。私は徐々に、確かにRがどのように働いていて、その最良のコーディング方法についてますます学んできました。 しかし、私はロードブロックを襲った。ここに私の状況があります。私は約700行のデータセットを持っており、各行には400列程度のデータがあります。私は、列の数と同じ数のパラメータを持つ関数が、評価(フィットネススコアリング)関数にパラメータとして送信されるということをすべてセットアップしています。私は、データセットの行ごとに移動し、行の各列の値を評価対象の関数に渡したいと考えています。最初の問題は、パラメータを別々に関数に渡す方法を考え出すことでした。ファンクション、ベクター、ループin R
パラメータがあることカ月の変数(1-12)のベクトルであるdo.call(function,as.list(parameters))
:「別に」私は機能は、私は次のように使用する400個のパラメータではなく、これを行うには長さ400のベクトルを期待していることを意味することにより、データセットの行の値に追加されます。これはうまくいきました。データセットの700行を反復するためにforループを使用した後、12ヶ月間別のループを使用して、上記の出力ベクトルを累積します。問題は、機能ごとに約24〜28秒の痛みを伴います。そして私は100-500の機能をこの評価に進化の世代ごとに送りました。結論はこれが道のりではないということです。次に、以下のようにsapplyメソッドを使用しようとしました。
これは、月として適用され(1-12)、データセットの行として適用されます(1-700)。これほど長い時間がかかりました。ソリューションのアイデアは参考になります。
'plyr'パッケージから' ddply'関数を使うことを考えましたか? –
'Rprof'を使って、コードのどの部分が最も遅いかを特定することができます。 –
私はplyrを見ました。どのように実装されますか?私はベクトルのリストを持っています、各ベクトルはパラメータを含む行です。私は月変数と一緒に関数に各行を送る必要があります。 –