【问题标题】:how to simplify nested loop in R如何简化R中的嵌套循环
【发布时间】:2018-08-13 01:44:22
【问题描述】:

我有以下代码,任何人都可以提出不同的嵌套循环方法:

x <- c(1, 2,3)
y <- c(6, 7, 8, 9)

n <- 10

for (i in 1:3) {
  for (j in 1:4) {

  decisions <- rep(0, n)

  for (k in 1:n) {

    ##a predefined function        
    decisions[k] <- pre_defined_funct(x[i], y[j]) 
    percent[i,j] <- sum(decisions)/n

}}}

【问题讨论】:

  • 你能提供一个可行的例子吗?如果您正确管理内存,循环也不错。
  • 我需要编辑这个问题,因为代码无法正常工作:(...我将不得不在几天后回到这个问题。现在,因为数字组合是小,我预先指定了 i 值和 j 值,所以删除了嵌套只是为了得到结果。

标签: r loops nested-loops


【解决方案1】:

您发布的算法不依赖于ndecision,因为它们在简化后被取消。因此可以表示如下:

x <- c(1, 2, 3)
y <- c(6, 7, 8, 9)
n <- 10

pre_defined_funct <- function(x, y) {
  # stub
  abs(sin(x + y))
}

prs <- expand.grid(x, y)
prs$percent <- pre_defined_funct(prs$Var1, prs$Var2)
library(reshape2)
dcast(prs, Var2 ~ Var1)

输出:

  Var2         1         2         3
1    6 0.6569866 0.9893582 0.4121185
2    7 0.9893582 0.4121185 0.5440211
3    8 0.4121185 0.5440211 0.9999902
4    9 0.5440211 0.9999902 0.5365729

【讨论】:

  • 谢谢!!这超出了我目前的 R 知识(从 expand.grid 开始),但会查看每个步骤以了解如何使用它!
猜你喜欢
  • 2015-01-15
  • 2018-03-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-12-19
  • 2013-07-19
相关资源
最近更新 更多