gpt4 book ai didi

r - 在 R 中生成可能排列的随机、非重复子集

转载 作者:行者123 更新时间:2023-12-02 00:13:40 25 4
gpt4 key购买 nike

给定 p 离散变量,我想随机选择 k 的可能排列。
换句话说,对于 a 中的变量 {0,1}b 中的 {1,2,3} ,两个随机排列将是[0,2][1,3]

我想在不首先生成所有可能排列的表格的情况下生成这些,因为这样做会随着变量数量和它们可以采用的值的增加而变得麻烦。问题是我想在不重复的情况下做到这一点。我发现 here 的代码很接近:

x <- sample.int (2, m*n, TRUE)-1L
dim(x) <- c(m,n)

我意识到对于 values > 2 ,我可以将其简化为二进制值矩阵,因此限制为二进制变量解决这个问题就足够了。

最佳答案

这可以满足您的需求。它将采用每个变量的排列而不是整体排列。这在技术上是相同的,但我相信它会加快速度。

a <- 1:100
b <- 1:100
c <- 1:100

yourdatamatrix <- cbind(a, b, c)

现在我们有了一些数据,函数来了:
PermutationFunction <- function (data, k) {

# creating matrix: amount of variables * amount of permutations
permutations <- matrix(1:(k * length(data[1,])), nrow=k)
row <- NULL

# Output will have as many columns as there are variables.
for (i in 1:length(data[1,])) {
permutations[ ,i] <- sample(data[ , i], k, replace=FALSE)
}
permutations
}

PermutationFunction(yourdatamatrix, k = 10)

时间检查(40 个变量,每个变量有 10000 个值,取 5000):
system.time(PermutationFunction(yourdatamatrix, 5000))

> system.time(PermutationFunction(yourdatamatrix, 5000))
user system elapsed
0.05 0.00 0.05

关于r - 在 R 中生成可能排列的随机、非重复子集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14261955/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com