提问人:Anne 提问时间:6/30/2021 更新时间:7/6/2021 访问量:29
for 循环中的错误,用于模拟具有负差异分数的数据作为行
Error in for-loop for simulating data with negative difference scores as rows
问:
我想运行一个for循环来模拟一些数据,但遇到了错误。 一般的想法是,我想模拟公式:(D-A)/K。
D 和 A 可以在 0 和 10 的值之间变化。K 可以在 0 到 150 的值之间变化。 我想要一个输出矩阵/数据帧,对于每个级别的 K(150 列),行上每个可能的 D-A 组合(21 行,值在 -10 和 +10 之间变化)的差异。
我写了这段代码:
D = c(0:10)
A = c(0:10)
K = c(0:150)
output=matrix(NA)
for (d in 0:10){
for (a in 0:10){
for (k in 0:150){
output[i-j,k]=(D[d]-A[a])/K[k]
}
}
}
但它不起作用,我认为是因为子集 [i-j] 在某些情况下会给出负行号(例如 D[2] - A[5])。我不知道如何解决这个问题。A、D 和 K 的值是固定的。
答:
1赞
Limey
6/30/2021
#1
你是对的:你的指数计算给出了负指数,这是没有帮助的。
我会完全避免循环。这是否能满足您的需求:
library(tidyverse)
df <- tibble() %>%
expand(K=1:150, A=0:10, D=0:10) %>%
mutate(Y=(D-A)/K)
df
# A tibble: 18,150 x 4
K A D Y
<int> <int> <int> <dbl>
1 1 0 0 0
2 1 0 1 1
3 1 0 2 2
4 1 0 3 3
5 1 0 4 4
6 1 0 5 5
7 1 0 6 6
8 1 0 7 7
9 1 0 8 8
10 1 0 9 9
# … with 18,140 more rows
注意:我更改了 由于除以也有问题。K
0
这应该为您提供 0 到 10 之间的 A 和 D 的每个值以及 1 到 150 之间的 K 值的 (D - A) / K 值。即 11 x 11 x 150 = 18150 个组合。
评论