7
votes

Créer efficacement une matrice des valeurs de fonction

Qu'est-ce que les développeurs rs expérimentés considèrent la manière la plus efficace (mais toujours lisible) de construire une matrice avec un nombre donné de lignes et de colonnes à partir d'une fonction donnée, telle que par exemple. A_ij = onefun (i, j) avec 1 <= i <= lignes, 1 <= j <= j <= cols?

Puisque je ne pouvais pas trouver quelque chose dans la documentation que j'ai proposée avec xxx

qui semble stupide et lent à moi. Toute amélioration (en particulier une doublure) Bienvenue! :)


0 commentaires

3 Réponses :


9
votes

Je pense que vous recherchez externe (SEQ (SEQ (Rows), SEQ (COLS), FN) (ou comme suggéré ci-dessous, externe (SEQ_LEN (lignes), SEQ_LEN (COLS) ), fn) : aurait besoin de quelques exemples pour voir combien de différence faite).

Vous pouvez gagner beaucoup en lisibilité (au moins si vous n'avez pas à aller chercher ? externe pour savoir ce qui se passe) de cette façon, mais je ne pense pas vraiment que vous économiser beaucoup de temps. Quelque chose d'intelligent et plus efficace pourrait être possible si votre fn est vectorisé pour commencer: est-ce?


2 commentaires

Ou avec SEQ_LEN plutôt que SEQ .


Merci de votre réponse à celle-ci si rapidement! En ce qui concerne la vectorisation de $ fn $ est concernée ... Malheureusement pas. Comme vous pourriez penser que je suis assez nouveau à R (je suis habitué à Numpy / Scipey, Maple, etc.) C'est pourquoi je n'ai pas encore découvert comment vectoriser les fonctions.



6
votes

regarder sur externe : xxx


0 commentaires

1
votes

Si vous n'écrivez simplement aucune fonction, vous pouvez obtenir des erreurs appelant 'externe', alors vectorisez-le en premier.

fn <- function(i,j){
  return(prop.test(c(tables[i,1], tables[j,1]), c(sum(tables[i,]), sum(tables[j,])))$p.value)
  }


2 commentaires

Pourriez-vous fournir un exemple d'une telle fonction?


Toute fonction qui ne fonctionne pas lorsqu'elle est appelée sur un vecteur, celle que j'ai rencontrée dans ce problème était (ajoutée en édition)