2011-10-26 20 views
15

Ho appena iniziato a imparare Probabilità e sto cercando strumenti con cui lavorare su Linux.Come calcolare combinazione e permutazione in R?

ho trovato alcune combinazioni pacchetti http://rss.acs.unt.edu/Rdoc/library/Combinations/html/00Index.html ma quando ho provato ad installarli, il processo failled con il seguente messaggio:

> 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) 

risposta

24

È possibile utilizzare il pacchetto combinat con R 2.13:

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

Se si desidera conoscere il numero di combinazioni/permutazioni, quindi controllare la dimensione del risultato, ad esempio:

length(permn(3)) 
dim(combn(3,2))[2] 
+0

C'è qualcosa che potrebbe solo darmi un numero di combinazioni possibili, piuttosto che stamparle tutte? –

+10

@MaximVeksler Dai un'occhiata a 'choose'. ('choose (5, 2) == ncol (combn (5, 2))') – chl

+0

Questo sito può essere usato come alternativo: http://www.englishact.com/Permutation/index.php –

1

Potrebbe essere che il pacchetto "Combinazioni" non è più aggiornato e lo fa non funziona con una versione recente di R (non ero in grado di installarlo su R 2.13.1 su Windows). Il pacchetto "combinat" si installa senza problemi per me e potrebbe essere una soluzione per te a seconda di cosa esattamente stai cercando di fare.

3

Il pacchetto Combinations non fa parte del set di pacchetti CRAN standard, ma fa piuttosto parte di un repository diverso, omegahat. Per installarlo è necessario utilizzare

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

, consultare la documentazione in http://www.omegahat.org/Combinations/

+0

Anche questo non funziona, penso che la versione R che sto usando sia (2.13) non compatibile –

+0

Ah, c'era un errore di battitura; dovrebbe essere omega, non omeghat. Ho copiato e incollato il comando, ma avrei dovuto provarlo prima. Ho aggiornato la mia risposta. Questo codice aggiornato funziona per me in 2.13.2 su Windows. –

13

La funzione combn si trova nel pacchetto di utilità standard (ad es. già installato)

choose è anche già disponibile nella speciale {} di base

+2

wow un sacco di seccature per una semplice domanda che la sua risposta era 3 parole "la funzione scelta" – bubakazouba

27

Se non si desidera che il codice di dipendere da altri pacchetti, si può sempre e solo scrivere queste funzioni:

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

comb = function(n, x) { 
    factorial(n)/factorial(n-x)/factorial(x) 
} 
+4

Questa è una cattiva idea numericamente. R può valutare 'choose (500, 2)' ma non 'factorial (500)'. Dovresti almeno lavorare con 'lfactorial' e poi prendere' exp() '. L'unica ragione per cui sto postando questo è che la tua risposta ha così tanti voti, sembra che la gente non sappia queste cose ... –