R 如何使数据帧中的行从右向左累加

R 如何使数据帧中的行从右向左累加,r,R,我有一个矩阵 > A= [ 1 2 4 > 2 3 1 > 3 1 2 ] 我想让每一行从右到左的结果累加如下: > A= [ 7 6 4 > 6 4 1 > 6 3 2 ] 我试图在中使用该解决方案,但它提供了一种添加矩阵的不同方法 有点神奇,但是: t(apply(A,1,function(x) rev(cumsum(rev(x))))) 是的 apply(A,1,FUN)将函数应用于矩阵的每一行 rev()

我有一个矩阵

> A= [ 1 2 4
>      2 3 1
>      3 1 2 ]
我想让每一行从右到左的结果累加如下:

> A= [ 7 6 4
>      6 4 1
>      6 3 2 ]

我试图在中使用该解决方案,但它提供了一种添加矩阵的不同方法

有点神奇,但是:

t(apply(A,1,function(x) rev(cumsum(rev(x)))))
是的

  • apply(A,1,FUN)
    将函数应用于矩阵的每一行
  • rev()
  • 最后一个
    t()
    是转置结果所必需的,因为
    apply
    总是按列返回其结果,正如(非常模糊地)此处所述(来自
    ?apply
    的“值”部分):
如果对“FUN”的每次调用都返回一个长度为“n”的向量,则“apply” 如果“n>1”,则返回维度“c(n,dim(X)[边距]”的数组


您在标题中提到了
data.frame
,有一种方法可以对data.frame使用
Reduce
rev
,以获得您想要的结果

A <- data.frame(c(1,2,3),c(2,3,1),c(4,1,2))
data.frame(rev(Reduce("+",rev(A),accumulate=TRUE)))
  c.7..6..6. c.6..4..3. c.4..1..2.
1          7          6          4
2          6          4          1
3          6          3          2
A