[英]calculating rate of change for a vector of numbers
我想計算數字向量的變化率,但是計算的分母應該是向量中的第一個數字。
我可以計算數字向量之間的變化率,但無法想出一種方法來使第一個數字成為計算的常數分母
我不要這個答案
x <- seq(5, 5.5, 0.1)
TTR::ROC(x, type = "discrete")
[1] NA 0.02000000 0.01960784 0.01923077 0.01886792 0.01851852
相反,我想生成
0.02 0.019607843 0.019230769 0.018867925 0.018518519
有誰知道一個方便的超快速功能。
定義自己的函數很容易
rr1 <- function(x) diff(x) / x[-length(x)]
rr1(x)
#[1] 0.02000000 0.01960784 0.01923077 0.01886792 0.01851852
或者使用經典的for
循環
rr2 <- function(x) {
r <- numeric(length(x) - 1)
for (i in 1:(length(x) - 1)) r[i] <- (x[i + 1] - x[i]) / x[i]
r
}
rr2(x)
#[1] 0.02000000 0.01960784 0.01923077 0.01886792 0.01851852
以及針對具有10^4
個條目的較大向量x
的兩種方法的微microbenchmark
比較
x <- seq(1, 1000, length.out = 10^4)
library(microbenchmark)
res <- microbenchmark(
rr1 = rr1(x),
rr2 = rr2(x))
#Unit: microseconds
# expr min lq mean median uq max neval cld
# rr1 157.596 190.554 518.0451 472.6565 501.5825 9565.411 100 a
# rr2 2057.669 2098.655 2397.8759 2121.2795 2227.8395 10124.874 100 b
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.