繁体   English   中英

如何在r中的矩阵中存储嵌套循环值

[英]how to store nested loop values in a matrix in r

我创建了一个循环来计算以下公式: values = 1+PE - (1+(i^w))^(1/w)) 其中 PE 和 w 变化如下:

#creation of my variables
w <- seq(1, 4, by = 0.1)
PE <- seq(1, 2, by = 0.1)

#creation of a matrix where I will be storing the results of the loop

results <- matrix(nrow= length(PE) , ncol= length(w))

#loop where w and PE are changing 

for(i in PE){
  for (j in w){
    results <- (1+i - (1+(i^j))^(1/j))
    print (results)
  }
}

results

如果我运行它,我会获得一个列表,其中打印了我的所有值,但我面临两个问题:

i) 我无法存储这些值。 当我在循环外打印结果时,我获得 1 个值而不是全部。 所以我不能操纵它们来创建矩阵,也不能操作数据框。

ii) 我最初为要存储的这些值创建了一个矩阵,所以当我添加到循环中时: results[i, j] 当我应该只得到一个矩阵时,我得到了几个具有许多 NA 值的矩阵。 这个矩阵应该有 11 行 31 列

桌子

results[i,j]你定义的方式不起作用,因为ij不是索引,而是值,所以你不会得到results[1,1], results[1,2], ...但是PEw值。 为此,您应该使用ij作为索引,方法是执行1:length(PE) ,并通过PE[i]获取PE的术语,对于w

for(i in 1:length(PE)){
  for (j in 1:length(w)){
    results[i,j] <- (1+PE[i] - (1+(PE[i]^w[j]))^(1/w[j]))
  }
}
w <- seq(1, 4, by = 0.1)
PE <- seq(1, 2, by = 0.1)

results <- sapply(w, function(j) (1+PE - (1+(PE^j))^(1/j)))

for(i in 1:length(PE)){
  for (j in 1:length(w)){
    results[i,j] <- (1+PE[i] - (1+(PE[i]^w[j]))^(1/w[j]))
  }
}

results 

write.table (results, file = "results.csv", sep = ",")


暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM