gpt4 book ai didi

r - 创建具有连续名称的 R 对象负载的最短方法是什么?

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

这就是我现在所拥有的:

weights0 <- array(dim=c(nrow(ind),nrow(all.msim))) 
weights1 <- array(dim=c(nrow(ind),nrow(all.msim)))
weights2 <- array(dim=c(nrow(ind),nrow(all.msim)))
weights3 <- array(dim=c(nrow(ind),nrow(all.msim)))
weights4 <- array(dim=c(nrow(ind),nrow(all.msim)))
weights5 <- array(dim=c(nrow(ind),nrow(all.msim)))
weights0 <- 1 # sets initial weights to 1

漂亮、清晰,但不漂亮、短小!经验丰富的 R 程序员会以不同的方式编写此代码吗?

编辑:

此外,是否有一种既定的方法来创建依赖于预先存在的变量的多个权重,以使其具有普遍性?例如,参数 num.cons 将等于 5:我们需要的约束(以及权重)的数量。想象一下这是一个常见的编程问题,所以肯定有一个解决方案。

最佳答案

选项 1

如果您想在您的环境中创建不同的元素,您可以使用 for 循环并分配来完成。其他选项包括 sapplyassign

envir 参数
for (i in 0:5)
assign(paste0("weights", i), array(dim=c(nrow(ind),nrow(all.msim))))
<小时/>

选项 2

但是,正如 @Axolotl9250 指出的那样,根据您的应用程序,将这些全部放在一个列表中通常是有意义的

weights <-  lapply(rep(NA, 6), array, dim=c(nrow(ind),nrow(all.msim)))

然后要像上面那样分配给 weights0 ,您可以使用

weights[[1]][ ] <- 1  

注意空的[ ],这对于分配给weights[[1]]的所有元素非常重要


选项 3

根据@flodel的建议,如果所有数组都具有相同的暗度,您可以创建一个大数组,其额外的暗淡长度等于数字你拥有的元素。 (即 6)

weights <- array(dim=c(nrow(ind),nrow(all.msim), 6))

请注意,对于任何选项:

如果要分配给数组的所有元素,则必须使用空括号。例如,在选项 3 中,要分配给第一个数组,您可以使用:

weights[,,1][] <- 1

关于r - 创建具有连续名称的 R 对象负载的最短方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15058284/

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