..or do I have to give
P.nk <- factorial(n) / factorial(n-k)
or
P.nk <- ch开发者_StackOverflow中文版oose(n,k) * factorial(k)
Thank you.
I don't know of any existing function. Your first suggestion will fail with large n. Your second idea should work fine when written as a function:
perm <- function(n,k){choose(n,k) * factorial(k)}
Then perm(500,2)
will give 249500 for example.
I think the gregmisc package provides these functions.
library(gregmisc)
permutations(n=4,r=4)
Mailing list reference: [R] permutation
Check out nsamp(n,k,ordered=T)
in the 'prob' package
Another way for doing that, from Base R is
permn <- prod( (n-(0:(k-1)))
that is a simple implementation of the following formula
$$p(n,k) = \prod_{j=0}^{k-1} n-j$$
package gtools
# R version 3.5.3
install.packages("gtools")
library(gtools)
base::nrow(gtools::permutations(500,2))
result:
[1] 249500
also see combinations-and-permutations-in-r, permutation_with_replacement.R
another package prob
:
base::ncol(prob::permsn(500,2))
[1] 249500
精彩评论