2010-05-20 27 views
7

..oder ichGibt es eine R-Funktion, um die Anzahl der Permutationen von n Objekten zu erhalten, k p (n, k)?

P.nk <- factorial(n)/factorial(n-k) 

oder

P.nk <- choose(n,k) * factorial(k) 

Danke zu geben.

+1

Wie andere gesagt haben, ist es eine Funktion gerade Permutationen in gregmisc (gtools in den neuen geparsten gregmisc Pakete) . Aber das und alle anderen Paketfunktionen, die ich gefunden habe, sind wirklich zum Erzeugen von Permutationen, nicht nur zum Geben der Gesamtzahl von Permutationen. Daher neigen sie dazu, langsam zu sein. Ich habe gerade solche Funktionen vorher getestet. Ihre Option 2 ist bei weitem die schnellste, viel schneller als alle Paketfunktionen, die ich gefunden habe. Es hat auch eine höhere Obergrenze für Berechnungen als Ihre erste Option. – John

+0

Danke für die nützliche Information – Brani

Antwort

8

Ich kenne keine vorhandene Funktion. Ihr erster Vorschlag wird mit großem n fehlschlagen. Ihre zweite Idee sollte gut funktionieren, wenn sie als Funktion geschrieben:

perm <- function(n,k){choose(n,k) * factorial(k)} 

Dann perm(500,2) 249.500 zum Beispiel geben.

+0

Der erste Vorschlag könnte als 'exp (lfactorial (n) - lfactorial (n-k)) umgeschrieben werden). Aber ich werde auch Sekunde benutzen. – Marek

3

Ich denke, das gregmisc Paket bietet diese Funktionen.

library(gregmisc) 
permutations(n=4,r=4) 

Mailingliste Referenz: [R] permutation

+1

Eigentlich, was gefragt wird, wäre gegeben durch: dim (Permutationen (n, k)) [1] –

1

Check out nsamp(n,k,ordered=T) im 'prob' -Paket

+0

'nsamp (500,2, geordnete = TRUE)' Begegnung Problemzustand in Rob Antwort ('Wert außerhalb des Bereichs ') . – Marek

Verwandte Themen