gpt4 book ai didi

r - 将函数应用于相同大小的连续子向量

转载 作者:行者123 更新时间:2023-12-04 10:33:46 25 4
gpt4 key购买 nike

我正在寻找一种很好且快速的方法来应用一些对向量进行操作的任意函数,例如 sum , 连续到连续 K 个元素的子向量。
这是一个简单的例子,它应该非常清楚地说明我想要什么:

v <- c(1, 2, 3, 4, 5, 6, 7, 8)
v2 <- myapply(v, sum, group_size=3) # v2 should be equal to c(6, 15, 15)

该函数应该尝试处理 group_size 的组给定向量的元素并将函数应用于每个组(将其视为另一个向量)。在这个例子中,向量 v2得到如下:(1 + 2 + 3) = 6, (4 + 5 + 6) = 15, (7 + 8) = 15。在这种情况下,K 没有精确地整除 N,所以最后一组是大小小于 K。

如果有更好/更快的解决方案,仅当 N 是 K 的倍数时才有效,我也将不胜感激。

最佳答案

尝试这个:

library(zoo)
rollapply(v, 3, by = 3, sum, partial = TRUE, align = "left")
## [1] 6 15 15

或者
apply(matrix(c(v, rep(NA, 3 - length(v) %% 3)), 3), 2, sum, na.rm = TRUE)
## [1] 6 15 15

此外,在 sum 的情况下最后一个可以缩短为
colSums(matrix(c(v, rep(0, 3 - length(v) %% 3)), 3))

关于r - 将函数应用于相同大小的连续子向量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7420815/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com