生成从 -2 到 5 且 R 中相差 0.1 的值矢量的最有效方法是什么?
uj5u.com热心网友回复:
使用seq
功能,
seq(-2, 5, 0.1)
uj5u.com热心网友回复:
seq.int()
已知比 快得多seq()
。
seq.int(-2, 5, .1)
或者,我们可以尝试一个while
回圈,
(5 - -2)/.1 1 ## calculate number of steps
# [1] 71
i <- 1; r <- s <- -2 ## define starting values
while (i < 71L) {
s <- s .1
r[i 1] <- s
i <- i 1
}
print(r)
甚至尝试整数。
ii <- 1L; ri <- si <- -20L ## define starting values
while (ii < 71L) {
si <- si 1L
ri[ii 1L] <- si
ii <- ii 1L
}
print(ri*.1)
查看基准测验(使用从 -2 到 1e5 的序列),while
回圈比seq()
(忽略定义起始值的时间!!)seq.int()
快,但仍然更快。
Unit: milliseconds
expr min lq mean median uq max neval cld
seq 8.857606 9.468344 11.579976 10.448676 12.225051 49.10238 1000 c
seq.int 1.351898 1.495189 2.187937 1.720612 2.243119 25.16653 1000 a
While 3.777003 3.946604 4.797641 4.164015 4.365438 476.62461 1000 b
While.int 3.775510 3.930066 4.709157 4.155621 4.348228 410.80900 1000 b
0 评论