R 实现元素排列与组合
R 实现元素排列与组合
实现组合(combination)可以使用combn(x,n)
,大多时候需要转置t(combn(x,n))
,x
可以是向量或数字。
实现元素全排列(permutation)就自己参考一部分combn()
函数写了一个permt
。x
可以是向量或数字。
permt = function (x, m) {
if (is.numeric(x) && length(x) == 1L && x > 0 && trunc(x) == x) x <- seq_len(x)
y = data.frame('v1' = x)
if (m == 1) return(y)
for (i in 2:m) {
y = as.data.frame(
cbind(
colname = rep(x, each=nrow(y)),
y
)
)
names(y)[names(y) == 'colname'] <- paste0("v",i)
}
y
}
# 一个萝卜一个坑。萝卜白菜仨个坑:
permt(c("a",'b'),3)
permt(c("1",'2'),3)
permt(2,3)