2010-05-20 4 views
7

.. 또는 내가n 개의 객체의 순열 수를 구하는 R 함수가 있습니까? k P (n, k)?

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

또는

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

감사합니다 제공해야합니까.

+1

다른 사람이 말했듯이, gregmisc에서 직선 순열 기능이있는 (새로운 구문 분석 gregmisc 패키지 gtools) . 그러나, 그리고 내가 찾은 다른 모든 패키지 함수는 실제로 순열을 생성하기위한 것이지 순열의 총 수를 제공하는 것이 아닙니다. 그러므로, 그들은 느린 경향이 있습니다. 필자는 그러한 기능을 이전에 벤치마킹했습니다. 여기 2 번 옵션은 내가 찾은 패키지 기능보다 훨씬 빠르고 빠르다. 또한 첫 번째 옵션보다 계산 상한이 높습니다. – John

+0

유용한 정보 주셔서 감사합니다 – Brani

답변

8

나는 기존 기능을 모른다. 큰 제안으로는 첫 번째 제안이 실패합니다. 함수로 작성하는 경우 두 번째 아이디어는 잘 작동합니다 :

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

그런 다음 perm(500,2) 예를 들어 249,500을 제공 할 것입니다.

+0

첫 제안은'exp (lfactorial (n) - lfactorial (n-k))'로 다시 작성 될 수 있습니다. 그러나 나는 두 번째도 사용할 것이다. – Marek

3

나는 gregmisc 패키지가 이러한 기능을 제공한다고 생각합니다.

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

메일 링리스트 C 참조 : 'PROB'패키지 아웃 nsamp(n,k,ordered=T) [R] permutation

+1

실제로, 질문하는 것은 다음과 같이 주어질 것입니다 : dim (순열 (n, k)) [1] –

1

확인

+0

'nsamp (500,2, ordered = TRUE)'Rob 응답에서 '문제가 발생했습니다' . – Marek