ネストされた行列マッチングとcolSumsのRでforループを高速化する方法

フェデリコジョルジ

私は明らかに単純な問題を抱えており、開発したものよりも高速なR実装が必要です。

この例では、ランダムシードとディメンションを初期化します。

set.seed(1)
d1<-400
d2<-20000
d3<-50

私は寸法と、行列Xを有するD1 X D2

X<-as.data.frame(matrix(rnorm(d1*d2),nrow=d1,ncol=d2))
rownames(X)<-paste0("row",1:nrow(X))
colnames(X)<-paste0("col",1:ncol(X))

そして、d1行インデックスを持つベクトルu

u<-sample(rownames(X),nrow(X),replace=TRUE)

私は、また、名前、行および寸法を有する行列C有するD3 X d2は

C<-matrix(rnorm(d3*d2),nrow=d3,ncol=d2)
rownames(C)<-sample(rownames(X),nrow(C),replace=FALSE)

ここで、次の非常に遅いループを使用して、一致するX行の合計で行列Cを埋めています。

system.time(
    for(i in 1:nrow(C)){
        indexes<-which(u==rownames(C)[i])
        C[i,] <- colSums(X[indexes,])
    }
)

この操作は私のPCでは約11.5秒かかりますが、forループを回避することで高速化できると確信しています。何か案は?どうもありがとう!

nēminem

matrixStats::colSums2行インデックスを渡しrownames()、ループの外に移動するオプションと一緒に使用するだけですX行列に変換する必要があります)。

Xm <- as.matrix(X)
names_of_rows <- rownames(C)
system.time(for (i in 1:nrow(C)) {
  indexes <- which(u == names_of_rows[i])
  C[i, ] <-  matrixStats::colSums2(Xm, rows = indexes)
})
# 0.03 sek

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

Pythonでネストされたforループを高速化する方法

分類Dev

Python DataFrameでネストされたループを高速化する方法は?

分類Dev

groupbymultiindexのネストされたループを高速化する方法

分類Dev

groupbymultiindexのネストされたループを高速化する方法

分類Dev

このパンダ操作を高速化する方法(ネストされたリストアイテムでグループ化)

分類Dev

Rでネストされたループを高速化

分類Dev

計算を高速化するために、ネストされたforループなしでシーケンスを使用して行列を計算します

分類Dev

Rでのネットワーク行列の入力を高速化する方法

分類Dev

C ++でネストされたループを高速化する

分類Dev

ループを高速化するPythonマルチスレッドとマルチプロセッシング

分類Dev

関数をインポートせずにネストされた for ループを高速化する方法

分類Dev

Pythonでネストされたforループを高速化する方法はありますか?

分類Dev

Pythonのネストされたループを高速化

分類Dev

条件文でPythonのネストされたループを高速化

分類Dev

複数のネストされたforループを使用してPython2プログラムを高速化する方法

分類Dev

Alea GPUを使用して、ネストされたループとビット演算を高速化します

分類Dev

インデックス検索PYTHONを使用してネストされたforループを高速化する方法

分類Dev

ネストされたループを高速化または置換する方法

分類Dev

BLAS / ATLAS / MKL / OPENBLASをインストールすると、C / C ++で記述されたRパッケージが高速化されますか?

分類Dev

ベクトル化により、RでトリプルネストされたForループを高速化

分類Dev

Pandas、Numpyを使用してPythonでネストされたforループロジックを高速化する方法は?

分類Dev

rでネストされたグループのグループインデックスを作成する方法

分類Dev

Pythonの高速化 'for'ネストされた 'if'ステートメントを使用したループ

分類Dev

2つのネストされたforループと複数のifステートメントを高速化します

分類Dev

Pythonでのベクトル化などにより、ネストされたループの実行を高速化する

分類Dev

マルチプロセッシングを効率的に使用して、大量の小さなタスクを高速化する方法は?

分類Dev

F#パターンマッチングと再帰vsループとif..thenはネストされた構造を解析するためのものです

分類Dev

MySQLのパフォーマンス-ビルドアップ/バーンダウンチャートのクエリを高速化する方法は?

分類Dev

マルチプロセッシングを使用してデータオブジェクト内のアイテムに関数を適用することでパフォーマンスを高速化できますか?

Related 関連記事

  1. 1

    Pythonでネストされたforループを高速化する方法

  2. 2

    Python DataFrameでネストされたループを高速化する方法は?

  3. 3

    groupbymultiindexのネストされたループを高速化する方法

  4. 4

    groupbymultiindexのネストされたループを高速化する方法

  5. 5

    このパンダ操作を高速化する方法(ネストされたリストアイテムでグループ化)

  6. 6

    Rでネストされたループを高速化

  7. 7

    計算を高速化するために、ネストされたforループなしでシーケンスを使用して行列を計算します

  8. 8

    Rでのネットワーク行列の入力を高速化する方法

  9. 9

    C ++でネストされたループを高速化する

  10. 10

    ループを高速化するPythonマルチスレッドとマルチプロセッシング

  11. 11

    関数をインポートせずにネストされた for ループを高速化する方法

  12. 12

    Pythonでネストされたforループを高速化する方法はありますか?

  13. 13

    Pythonのネストされたループを高速化

  14. 14

    条件文でPythonのネストされたループを高速化

  15. 15

    複数のネストされたforループを使用してPython2プログラムを高速化する方法

  16. 16

    Alea GPUを使用して、ネストされたループとビット演算を高速化します

  17. 17

    インデックス検索PYTHONを使用してネストされたforループを高速化する方法

  18. 18

    ネストされたループを高速化または置換する方法

  19. 19

    BLAS / ATLAS / MKL / OPENBLASをインストールすると、C / C ++で記述されたRパッケージが高速化されますか?

  20. 20

    ベクトル化により、RでトリプルネストされたForループを高速化

  21. 21

    Pandas、Numpyを使用してPythonでネストされたforループロジックを高速化する方法は?

  22. 22

    rでネストされたグループのグループインデックスを作成する方法

  23. 23

    Pythonの高速化 'for'ネストされた 'if'ステートメントを使用したループ

  24. 24

    2つのネストされたforループと複数のifステートメントを高速化します

  25. 25

    Pythonでのベクトル化などにより、ネストされたループの実行を高速化する

  26. 26

    マルチプロセッシングを効率的に使用して、大量の小さなタスクを高速化する方法は?

  27. 27

    F#パターンマッチングと再帰vsループとif..thenはネストされた構造を解析するためのものです

  28. 28

    MySQLのパフォーマンス-ビルドアップ/バーンダウンチャートのクエリを高速化する方法は?

  29. 29

    マルチプロセッシングを使用してデータオブジェクト内のアイテムに関数を適用することでパフォーマンスを高速化できますか?

ホットタグ

アーカイブ