x 行 R 的滑动数据集

Sliding dataset for x rows R

我有一个如下所示的数据集,想为最后 20 行创建一个嵌套数据框。

x <- rep(1:100, 1)
y <- rnorm(100)
z <- rnorm(100)*2

data.frame(x,y,z)

例如,如果 x = 100,它将包含 x = 81:100、x = 99 的行的记录,等等。如果之前没有 20 行,它将只包括之前的行数,例如 15 将包括 1:15.

理想的输出是嵌套的,这样函数就可以应用于所有数据帧

如果我没理解错的话,这个函数应该适合:

#library
library(tidyverse)

#data
x <- rep(1:100, 1)
y <- rnorm(100)
z <- rnorm(100)*2

dataf <- data.frame(x,y,z)

#working function
getDf <- function(df, n) {

  if (n >= 19) {

    return(df %>% slice((n-19):n))  

  } else {

    return(df %>% slice(1:n))

  }

}

#examples
getDf(dataf,100)

getDf(dataf,99)

getDf(dataf,15)