r - 从 R 中的四个整数列表生成所有可能的排列

标签 r list permutation probability mean

(非常)业余的编码员和统计学家正在研究 R 中的问题。

我有四个整数列表:A、B、C、D。

A <- [1:133]
B <- [1:266]
C <- [1:266]
D <- [1:133, 267-400]

我希望 R 从每个列表中选取 1 个项目来生成所有排列(我知道这段代码将永远运行),然后取每个排列的平均值。例如,[1, 100, 200, 400] -> 175.25。

理想情况下,我最终会得到所有这些方法的列表。

有什么想法吗?

最佳答案

对于较小但类似的问题,我将采用以下方法:

A <- 1:13
B <- 1:26
C <- 1:26
D <- c(1:13, 27:40)

mymat <- expand.grid(A, B, C, D)
names(mymat) <- c("A", "B", "C", "D")
mymat <- as.matrix(mymat)
mymeans <- rowSums(mymat)/4

如果你只增加所有索引,你可能会崩溃 R,但你可能会设置一个循环,如下所示(未测试):

B <- 1:266
C <- 1:266
D <- c(1:133, 267:400)

for(A in 1:133) {
    mymat <- expand.grid(A, B, C, D)
    names(mymat) <- c("A", "B", "C", "D")
    mymat <- as.matrix(mymat)
    mymeans <- rowSums(mymat)/4
    write.table(mymat, file = paste("matrix", A, "txt", sep = "."))
    write.table(mymeans, file = paste("means", A, "txt", sep = "."))
    rm(mymat, mymeans)
}

获得全部。这仍然可能太大,在这种情况下,您可以执行嵌套循环,或循环 D (因为它是最大的)

或者,

n <- 1e7
A <- sample(133, size = n, replace= TRUE)
B <- sample(266, size = n, replace= TRUE)
C <- sample(266, size = n, replace= TRUE)
D <- sample(x = c(1:133, 267:400), size = n, replace= TRUE)
mymeans <- (A+B+C+D)/4

将为您提供大量的方法样本,并且根本不需要时间。

hist(mymeans)

关于r - 从 R 中的四个整数列表生成所有可能的排列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13850818/

相关文章:

C++ 对多个类使用相同的 ADT 结构

c - 排列的矩阵和子矩阵

r - 将 Shiny(非 ggplot)图输出为 PDF

R–将函数应用于列表中的特定列

r - 没有 knitrout 和逐字环境的 block 输出

c# - 从 Enumerable.Range 或 List<int> 填充 List<dynamic>

c# - 查找实例在列表中出现的次数

python - 列表的 N 个不同排列的随机样本

java - 生成字符串按空格的所有组合

r - 如何解决R中的 "NAs are not allowed in subscripted assignments"问题