This function computes Stirling numbers of the second kind, \(S(n, k)\), which count the number of ways of partitioning n distinct objects in to k non-empty sets.

Stirling2(n, k)

Arguments

n

A vector of one or more positive integers

k

A vector of one or more positive integers

Value

An vector of Stirling numbers of the second kind

Details

The implementation on this function is a simple recurrence relation which defines $$S(n, k) = kS(n - 1, k), + S(n - 1, k - 1)$$ for \(k > 0\) with the inital conditions \(S(0, 0) = 1\) and \(S(n, 0) = S(0, n) = 0\). If n and n have different lengths then expand.grid is used to construct a vector of (n, k) pairs

Author

James Curran

Examples


## returns S(6, 3)
Stirling2(6, 3)
#> [1] 90

## returns S(6,1), S(6,2), ..., S(6,6)
S2(6, 1:6)
#> [1]  1 31 90 65 15  1

## returns S(6,1), S(5, 2), S(4, 3)
S2(6:4, 1:3)
#> [1]  1 15  6