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'argumentmarge code> est 2