如何将嵌套循环值存储在 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
如果我 运行 它我得到一个列表,其中打印了我的所有值,但我面临 2 个问题:
i) 我无法存储这些值。当我在循环外打印结果时,我获得了 1 个值,而不是全部。所以我不能操纵它们来创建矩阵,也不能创建数据框。
ii) 我最初为要存储的这些值创建了一个矩阵,所以当我在循环中添加时: results[i, j] 当我应该只得到一个矩阵时,我得到了几个具有许多 NA 值的矩阵。这个矩阵应该有 11 行和 31 列
TABLE
results[i,j]
你定义的方式不起作用,因为 i
和 j
不是索引,而是值,所以你不会得到 results[1,1], results[1,2], ...
但PE
和 w
的值代替。为此,您应该使用 i
和 j
作为索引,方法是执行 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 = ",")
我创建了一个循环来计算以下公式: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
如果我 运行 它我得到一个列表,其中打印了我的所有值,但我面临 2 个问题:
i) 我无法存储这些值。当我在循环外打印结果时,我获得了 1 个值,而不是全部。所以我不能操纵它们来创建矩阵,也不能创建数据框。
ii) 我最初为要存储的这些值创建了一个矩阵,所以当我在循环中添加时: results[i, j] 当我应该只得到一个矩阵时,我得到了几个具有许多 NA 值的矩阵。这个矩阵应该有 11 行和 31 列
TABLE
results[i,j]
你定义的方式不起作用,因为 i
和 j
不是索引,而是值,所以你不会得到 results[1,1], results[1,2], ...
但PE
和 w
的值代替。为此,您应该使用 i
和 j
作为索引,方法是执行 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 = ",")