【发布时间】:2021-09-02 13:11:01
【问题描述】:
我有一个 n x 3 x m 数组,称之为 I。它包含 3 列、n 行(例如 n=10)和 m 个切片。我有一个必须完成的计算,以根据切片中的其他 2 列替换每个切片中的第三列。
我编写了一个函数 insertNewRows(I[,,simIndex]),它采用给定的切片并替换第三列。下面的 for 循环可以满足我的要求,但速度很慢。 有没有办法通过使用其中一个应用函数来加快速度?我不知道如何让它们以我想要的方式工作。
for(simIndex in 1:m){
I[,, simIndex] = insertNewRows(I[,,simIndex])
}
如果需要,我可以提供有关 insertNewRows 的更多详细信息,但简短的版本是它采用基于给定数组切片的列 I[,1:2, simIndex] 的概率,并生成基于二项式 RV关于概率。
似乎其中一个应用功能应该通过使用来工作 I = apply(FUN = insertNewRows, MARGIN = c(1,2,3)) 但这只会产生乱码..?
提前感谢您! IK
【问题讨论】:
-
如果您可以向我们提供可复制的minimal working example,我们可以复制和粘贴以更好地了解问题并测试可能的解决方案,这将很有帮助。您可以使用
dput(YOUR_DATASET)共享数据集,或者使用dput(head(YOUR_DATASET))共享较小的样本。 (请参阅this answer 以获得一些很好的建议。)
标签: r for-loop vectorization apply