r - 有没有办法对访问向量的多个元素的操作进行向量化?

标签 r loops vectorization

假设我有一个整数向量:

> a<-sample(1:100,10)  
> a  
 [1] 13 23 97 70 63 32 82 31 15 36  

我想要一个包含这个向量的累积值的向量。也就是说,我想要向量
13 36 133 203 266 298 380 411 426 462

实现此目的的一种方法是使用 for 循环。我更喜欢使用 apply/lapply/sapply/...,但我能想到的唯一方法是:
sapply(1:length(a), function(x) {sum(a[1:x])})
[1]  13  36 133 203 266 298 380 411 426 462

这有效,但我想知道是否有更好的方法来做到这一点。在那儿?
(这可能是一个不好的例子,但总的来说,如果您知道这些元素相对于当前元素的位置,有没有办法访问正在迭代的列表元素?)

最佳答案

你可能会傻笑,但已经有一个内置的功能,请参阅 ?cumsum

x <- sample(1:100,20)
x

 [1] 32 42 54 79 92 69 96 41 51 22 74 76 86 37 85 99  3 11 17 57

cumsum(x)

 [1]   32   74  128  207  299  368  464  505  556  578  652  728  814  851  936
[16] 1035 1038 1049 1066 1123

关于r - 有没有办法对访问向量的多个元素的操作进行向量化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13946077/

相关文章:

R通过添加空格格式化整数

r - 将多因素方差分析 [TRAMINER] 导出到 latex

xml - 如何使用Powershell循环创建XML文件的元素?

javascript - 循环提示用户直到有效输入

javascript - 难以创建 Jquery 循环以重复更改背景颜色和动画元素

r - R 中 character() 和 ""之间的差异

r - R中的邻近空间过滤

python - 按以平均值为中心的标准偏差对 Pandas 列值进行分箱?

python - 向量化 NumPy 数组中的迭代加法

python - 在纯 numpy 中矢量化康威的生命游戏?