簡體   English   中英

將向量的每個元素除以下一個

[英]Divide each element of a vector by the next

diff()是否有一個類似的函數,該函數將連續的元素分開而不是找出差值?

x = c(10,8,4,-1)
some_function(x)
# [1]  1.25  2.00 -4.00

我認為基本R中沒有可用的功能。但是您可以嘗試創建自己的解決方案,例如

unlist(sapply(2:length(x), function(i) x[i-1]/x[i]))
# unlist (sort of) takes care of when x has less than 2 elements

要么

x[-length(x)]/x[-1]

dplyr另一個選擇是使用lag

library(dplyr)
lag(x)/x

#[1]    NA  1.25  2.00 -4.00

如果要刪除NA ,請執行

y = lag(x)/x
y[-1]

#[1]  1.25  2.00 -4.00

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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