2010-05-20 16 views
7

..ya benn nesnelerinin permütasyon sayısını elde etmek için bir R fonksiyonu var mı k P (n, k)?

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

veya

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

teşekkür ederiz vermek gerekiyor.

+1

Diğerleri söylediler, gregmisc bir düz permütasyon fonksiyonu yoktur (yeni çözümlü gregmisc paketlerinde gtools) . Ancak, bu ve bulduğum diğer tüm paket işlevleri, sadece toplam permütasyon sayısını vermek için değil, sadece permütasyon üretmek için. Bu nedenle, yavaş olma eğilimindedirler. Daha önce böyle işlevleri işaretledim. Buradaki seçenek 2, bulduğum herhangi bir paket işlevinden çok daha hızlı ve çok daha hızlıdır. Ayrıca, ilk seçenekinizden daha yüksek bir üst limit vardır. – John

+0

Yararlı bilgiler için teşekkürler – Brani

cevap

8

Mevcut herhangi bir işlevi bilmiyorum. İlk öneriniz büyük n ile başarısız olacaktır. bir fonksiyonu olarak yazılır yaptığında ikinci bir fikir iyi çalışması gerekir:

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

Sonra perm(500,2) örneğin 249500 verecektir.

+0

İlk öneri, 'exp (lfactorial (n) - lfactorial (n-k)) 'olarak yeniden yazılabilir. Ama bende ikinci kullanacağım. – Marek

3

gregmisc paketinin bu işlevleri sağladığını düşünüyorum.

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

Mail listesi referansı: 'prob' paketinde ortaya nsamp(n,k,ordered=T) [R] permutation

+1

Aslında, sorulması gerekenler: loş (permütasyonlar (n, k)) [1] –

1

Kontrol

+0

'nsamp (500,2, sıra = TRUE)' Rob yanıtında ("menzil dışı değer") sorun durumuyla karşılaşma . – Marek

İlgili konular