0
votes

Comment puis-je accélérer mon code R lorsque vous multipliez sur des tables?

Voici un exemple de ce que j'essaie de faire.

dtA <- data.table(A = 1:3, B = 4:6, D = 7:9)
dtB <- data.table(id = c("A", "B", "C", "D"), multi = c(0.1, 0.2, 0.3, 0.4))


for(COL in c("A", "B", "D")) {
  dtA[, (COL) := get(COL) * dtB[id == COL, multi]] 
}


0 commentaires

4 Réponses :


0
votes

Voici un Data Stable.Table Approche .. probablement pas la voie nichée .. mais cela fait le travail. XXX


0 commentaires

0
votes

pense que ceci est un peu plus rapide que votre méthode xxx pré>

ne peut pas vraiment voir où vous pourriez obtenir une vitesse significative, car je ne pense pas que vous faites quelque chose de particulièrement gaspillé Dans votre tentative. p>

Edit: p>

Ceci est environ 50% plus rapide à nouveau sur des exemples plus importants P>

cn <- colnames(dtA)
dtA[,(cn) := mapply(function(x,y) x*y, dtA, dtB[cn, multi, on = 'id'], SIMPLIFY = FALSE)]


0 commentaires

0
votes

Voici une approche de base r xxx

qui donne xxx


0 commentaires

1
votes

Il est possible que vous puissiez être mieux servi à l'aide d'une bibliothèque conçue pour calculer rapidement des produits, puis de stocker les résultats dans une carte ou d'autres formats. Par exemple, «RFast» est optimisé pour les calculs numériques sur les matrices. R 'Data.table' est excellent au stockage et à la récupération des grandes tables de données, mais par des magasins par défaut sous forme de liste (R): xxx


0 commentaires