Cela devrait être simple. A est un cadre de données. J'essaie de calculer un [1,] * A [2,] * A [3,] *** tout en bas. Y a-t-il un moyen de le faire sans boucles? Merci d'avance! P>
3 Réponses :
Nous pouvons utiliser ou sapply code> pour prendre la colonne-wise produit
colProds code> de
matrixstats code> < / p>
Tout d'abord, laissez-nous créer des données avec: @ronak Shah a proposé les deux méthodes suivantes p> @ DC37 proposé cela dans le commentaire à Votre message d'origine p> Une troisième solution serait d'utiliser le package Nous pouvons comparer chaque approche pour voir comment ils effectuent: p> Nous voyons que a code> est une matrice (qui est nécessaire pour les opérations matricielles de
matrixststats :: ColProds code> et
rfast :: ColProds code>).
B code> est juste la même matrice que A
data.frame code> à utiliser avec SAPPLY. La pertinence de chaque méthode dépend évidemment de votre cas d'utilisation. P>
rfast code>. p>
appliquer () code> et
matrixstats :: colprods () code> sont plus lents que les solutions fournies par
sapply () code> et
rfast :: colprods () code>. Si vous ne faites que faire l'opération une fois, cela n'a pas d'importance, mais si vous le faites plusieurs fois (par exemple à l'intérieur d'une boucle ou une fonction à optimiser), les différences de temps pourraient s'ajouter. p>
une option avec sommarise_all code> à partir de
dplyr code>
données h3>
Vous pouvez utiliser
appliquer code> avec l'argument
marge code> est 2