web-dev-qa-db-fra.com

Comment calculer la combinaison et la permutation dans R?

Je viens de commencer à apprendre la probabilité et je cherche des outils pour travailler avec Linux.

J'ai trouvé des packages de combinaisons http://rss.acs.unt.edu/Rdoc/library/Combinations/html/00Index.html mais quand j'ai essayé de les installer, le processus a échoué avec le message suivant:

> install.packages("Combinations")
Installing package(s) into ‘/home/maxim/R/x86_64-pc-linux-gnu-library/2.13’
(as ‘lib’ is unspecified)
Warning message:
In getDependencies(pkgs, dependencies, available, lib) :
  package ‘Combinations’ is not available (for R version 2.13.1)
25
Maxim Veksler

Vous pouvez utiliser le package combinat avec R 2.13:

install.packages("combinat")
require(combinat)
permn(3)
combn(3, 2)

Si vous souhaitez connaître le nombre de combinaisons/permutations, vérifiez la taille du résultat, par exemple:

length(permn(3))
dim(combn(3,2))[2]
29
Shane

Si vous ne voulez pas que votre code dépende d'autres packages, vous pouvez toujours simplement écrire ces fonctions:

perm = function(n, x) {
  factorial(n) / factorial(n-x)
}

comb = function(n, x) {
  factorial(n) / factorial(n-x) / factorial(x)
}
30
CCC

La fonction combn est dans le package standard d'utils (c'est-à-dire déjà installé)

choisir est également déjà disponible dans la {base} spéciale

22
PeterVermont

Le package Combinations ne fait pas partie de l'ensemble de packages CRAN standard, mais fait plutôt partie d'un référentiel différent, omegahat. Pour l'installer, vous devez utiliser

install.packages("Combinations", repos = "http://www.omegahat.org/R")

Voir la documentation sur http://www.omegahat.org/Combinations/

3
Brian Diggs

Il se peut que le package "Combinaisons" ne soit plus mis à jour et ne fonctionne pas avec une version récente de R (je n'ai pas non plus pu l'installer sur R 2.13.1 sous Windows). Le package "combinat" s'installe sans problème pour moi et peut être une solution pour vous en fonction de ce que vous essayez de faire exactement.

1
Antoine Vernet