2016-12-06 16 views
0

私はこのコードを持っている:R - 2つの `for 'ループを` lapply`に変換する方法は?

getSomething = function(x, y) { 
     return something 
    } 

    b = matrix(NA, nrow = ncol(a), ncol = ncol(a)) 

    # Loop through the columns 
    for(i in 1:ncol(a)) { 
     # Loop through the columns for each column 
     for(j in 1:ncol(a)) { 
     b[i, j] = getSomething(as.matrix(a[i]), as.matrix(a[j])) 
     } 
    } 

それはうまく動作しますが、私は大きなデータセット上のコードを実行しようとすると、それが実行に非常に長い時間がかかります。

lapplyに変換する方法は、より速く実行できるように機能しますか?

ありがとうございます。

答えて

0

むしろlapplyを使用するよりも、あなたのためのこれらのループを行いouterを見て:

outer(seq(ncol(a)), seq(ncol(a)), 
     FUN=function(i, j) getSomething(as.matrix(a[i]), as.matrix(a[j])) 
) 
+0

感謝をあなたの答えのために、私はまだエラーメッセージが表示されました: '暗くなりは、[製品3249]は、オブジェクトの長さと一致しません[1] '(3249は57 * 57から、' a'は57の変数を持ち、200の観測値を持つ)。 'a'の観測数を考慮する必要がありますか? – cellardoors

関連する問題