簡體   English   中英

計算數字向量的變化率

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM