我想从 5 个不同的类中找到两个类的所有可能样本。我正在尝试这个:
x <- c(A = 23, B = 21, C = 29, D = 17, E = 18)
mean (x)
sd (x)
sample(x)
sample(x, 2, replace = FALSE, prob = NULL)
sample(x, 5, replace = FALSE, prob = NULL)
但我认为它没有给我所有可能样本的数量是错误的
我想从 5 个不同的类中找到两个类的所有可能样本。我正在尝试这个:
x <- c(A = 23, B = 21, C = 29, D = 17, E = 18)
mean (x)
sd (x)
sample(x)
sample(x, 2, replace = FALSE, prob = NULL)
sample(x, 5, replace = FALSE, prob = NULL)
但我认为它没有给我所有可能样本的数量是错误的
尝试这个
install.packages("gtools")
library(gtools)
permutations(length(x), 2, x)
# [,1] [,2]
# [1,] 17 18
# [2,] 17 21
# [3,] 17 23
# [4,] 17 29
# [5,] 18 17
# [6,] 18 21
# [7,] 18 23
# [8,] 18 29
# [9,] 21 17
# [10,] 21 18
# [11,] 21 23
# [12,] 21 29
# [13,] 23 17
# [14,] 23 18
# [15,] 23 21
# [16,] 23 29
# [17,] 29 17
# [18,] 29 18
# [19,] 29 21
# [20,] 29 23
如果您只想知道可能的排列数量,请使用@Floo0s 答案或执行类似的操作
nrow(permutations(length(x), 2, x))
# [1] 20
如果你有 5 节课。有 5 超过 2 的可能性。
见http://en.wikipedia.org/wiki/Binomial_coefficient
在 R 中,这是函数choose
计算的内容。
所以
choose(length(x),2)
答案:10 种可能的组合(如果顺序无关紧要,那么 (A,B) 等于 (B,A))
如果订单很重要,那就是
choose(length(x),2) * factorial(2)
答案:20
正如博维尔上校所说。要找到所有这些组合,请使用combn
也许通过使用:
combn(x, 2)
[,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
[1,] 23 23 23 23 21 21 21 29 29 17
[2,] 21 29 17 18 29 17 18 17 18 18
矩阵的列将为您提供所有可能的组合,而忽略 order。
或使用包combinat
。