簡體   English   中英

在相鄰的兩行逐行應用 function

[英]Apply function row by row on two adjacent rows

我有一個 function 需要兩個后續行作為參數,即

calc <- function(x, y){
    return(x/1.07*y)
}

其中 x = 數據 [i,1] 和 y = 數據 [i-1,1]。 function 應該從第二行開始逐行應用。 我找不到將 y 作為參數傳遞的方法。 有沒有辦法不使用 for 循環來做到這一點?

沒有可重現的例子很難知道,但這里有一個基本的 R 例子:

x <- 1:10
c(NA, x[-1] / (1.07*x[-length(x)]))
#[1]  NA 1.869159 1.401869 1.246106 1.168224 1.121495 1.090343 1.068091 1.051402 1.038422

您需要一個長度與行數相同的向量,因此第一個值需要 append NA

或者使用dplyr::lag

library(dplyr)
x / (1.07*lag(x))
#[1]  NA 1.869159 1.401869 1.246106 1.168224 1.121495 1.090343 1.068091 1.051402 1.038422

或者使用data.table::shift

library(data.table)
x / (1.07*shift(x))
#[1]  NA 1.869159 1.401869 1.246106 1.168224 1.121495 1.090343 1.068091 1.051402 1.038422

暫無
暫無

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

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