স্লাইডার প্যাকেজটির জন্য এটি ব্যবহার করা যেতে পারে। এটির একটি ইন্টারফেস রয়েছে যা বিশেষত purrr এর সাথে অনুরূপ বোধ করার জন্য ডিজাইন করা হয়েছে। এটি যেকোন স্বেচ্ছাসেবী ফাংশন গ্রহণ করে এবং যে কোনও ধরণের আউটপুট ফেরত দিতে পারে। ডেটা ফ্রেমগুলি সারিবদ্ধভাবে পুনরাবৃত্তি হয়। পিকেডাউন সাইটটি এখানে ।
library(slider)
x <- 1:3
# Mean of the current value + 1 value before it
# returned as a double vector
slide_dbl(x, ~mean(.x, na.rm = TRUE), .before = 1)
#> [1] 1.0 1.5 2.5
df <- data.frame(x = x, y = x)
# Slide row wise over data frames
slide(df, ~.x, .before = 1)
#> [[1]]
#> x y
#> 1 1 1
#>
#> [[2]]
#> x y
#> 1 1 1
#> 2 2 2
#>
#> [[3]]
#> x y
#> 1 2 2
#> 2 3 3
স্লাইডার এবং ডেটা উভয়েরই ওভারহেড frollapply()
খুব কম হওয়া উচিত (চিড়িয়াখানার থেকে অনেক দ্রুত) much frollapply()
এখানে এই সাধারণ উদাহরণটির জন্য কিছুটা দ্রুত হতে দেখায়, তবে মনে রাখবেন যে এটি কেবল সংখ্যার ইনপুট নেয় এবং আউটপুটটি অবশ্যই একটি স্কেলারের সংখ্যাসূচক মান হওয়া উচিত। স্লাইডার ফাংশনগুলি সম্পূর্ণ জেনেরিক এবং আপনি কোনও ডেটা টাইপ ফিরতে পারেন।
library(slider)
library(zoo)
library(data.table)
x <- 1:50000 + 0L
bench::mark(
slider = slide_int(x, function(x) 1L, .before = 5, .complete = TRUE),
zoo = rollapplyr(x, FUN = function(x) 1L, width = 6, fill = NA),
datatable = frollapply(x, n = 6, FUN = function(x) 1L),
iterations = 200
)
#> # A tibble: 3 x 6
#> expression min median `itr/sec` mem_alloc `gc/sec`
#> <bch:expr> <bch:tm> <bch:tm> <dbl> <bch:byt> <dbl>
#> 1 slider 19.82ms 26.4ms 38.4 829.8KB 19.0
#> 2 zoo 177.92ms 211.1ms 4.71 17.9MB 24.8
#> 3 datatable 7.78ms 10.9ms 87.9 807.1KB 38.7
forecast::ma
এবং এটিতে সমস্ত পাড়া রয়েছে, ঠিক নয় not