使用 seq 将循环中的值存储到向量中
Store values in loop into vector with seq
我可以像这样编写循环时将循环中的值有效地存储到向量中:
z = 0.5
x <- vector("numeric", 10)
for(i in 1:10){
x[i] <- z - i/10
}
>[1] 0.4 0.3 0.2 0.1 0.0 -0.1 -0.2 -0.3 -0.4 -0.5
但是,当我使用数字序列而不是像这样的冒号分隔符时:
z = 0.5
x <- vector("numeric", 20)
for(i in seq(0.05, 1, 0.05)){
x[i] <- z - i
}
>[1] -0.5 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
它无法 return 为 i
的每次迭代提供一个向量,为什么要这样做以及如何让循环有效地与 seq()
一起工作?
你的索引也变成了 double,这就是问题所在。您可以用数字定义一个向量 I
并遍历索引的 seq
量。用 i
.
子集 I
和结果 x
z <- 0.5
x <- vector("numeric", 20)
I <- seq(0.05, 1, 0.05)
for (i in seq(I)) {
x[i] <- z - I[i]
}
x
# [1] 0.45 0.40 0.35 0.30 0.25 0.20 0.15 0.10 0.05
# [10] 0.00 -0.05 -0.10 -0.15 -0.20 -0.25 -0.30 -0.35 -0.40
# [19] -0.45 -0.50
以防万一这不仅仅是某事的简化示例,因为 R 是矢量化的,您也可以这样做
z - seq(0.05, 1, 0.05)
# [1] 0.45 0.40 0.35 0.30 0.25 0.20 0.15 0.10 0.05
# [10] 0.00 -0.05 -0.10 -0.15 -0.20 -0.25 -0.30 -0.35 -0.40
# [19] -0.45 -0.50
我可以像这样编写循环时将循环中的值有效地存储到向量中:
z = 0.5
x <- vector("numeric", 10)
for(i in 1:10){
x[i] <- z - i/10
}
>[1] 0.4 0.3 0.2 0.1 0.0 -0.1 -0.2 -0.3 -0.4 -0.5
但是,当我使用数字序列而不是像这样的冒号分隔符时:
z = 0.5
x <- vector("numeric", 20)
for(i in seq(0.05, 1, 0.05)){
x[i] <- z - i
}
>[1] -0.5 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
它无法 return 为 i
的每次迭代提供一个向量,为什么要这样做以及如何让循环有效地与 seq()
一起工作?
你的索引也变成了 double,这就是问题所在。您可以用数字定义一个向量 I
并遍历索引的 seq
量。用 i
.
I
和结果 x
z <- 0.5
x <- vector("numeric", 20)
I <- seq(0.05, 1, 0.05)
for (i in seq(I)) {
x[i] <- z - I[i]
}
x
# [1] 0.45 0.40 0.35 0.30 0.25 0.20 0.15 0.10 0.05
# [10] 0.00 -0.05 -0.10 -0.15 -0.20 -0.25 -0.30 -0.35 -0.40
# [19] -0.45 -0.50
以防万一这不仅仅是某事的简化示例,因为 R 是矢量化的,您也可以这样做
z - seq(0.05, 1, 0.05)
# [1] 0.45 0.40 0.35 0.30 0.25 0.20 0.15 0.10 0.05
# [10] 0.00 -0.05 -0.10 -0.15 -0.20 -0.25 -0.30 -0.35 -0.40
# [19] -0.45 -0.50