【发布时间】:2016-11-29 02:19:13
【问题描述】:
给定以下df:
a=c('a','b','c')
b=c(1,2,5)
c=c(2,3,4)
d=c(2,1,6)
df=data.frame(a,b,c,d)
a b c d
1 a 1 2 2
2 b 2 3 1
3 c 5 4 6
我想逐行应用一个函数,该函数通常采用 cummax 之类的向量(并返回向量)到位置 b 到 d 的列。
然后,我想将输出返回到 df 中,或者作为 df 新列中的向量,或者替换原始数据。
我想避免将它写成for 循环,它会迭代每一行,将单元格的内容拉出到一个向量中,做它的事情然后放回去。
有没有更有效的方法?我已经尝试了 apply 系列函数,但我一直在努力寻找一种好的方法来逐行矢量化列的内容并获得正确的输出。
最终输出可能看起来像这样(假设我应用了 cummax() 函数)。
a b c d
1 a 1 2 2
2 b 2 3 3
3 c 5 5 6
或
a b c d output
1 a 1 2 2 (1,2,2)
2 b 2 3 1 (2,3,3)
3 c 5 4 6 (5,5,6)
其中输出是一个向量。
【问题讨论】:
-
请在您的问题中发布您想要的输出。
4:2的意思尚不清楚。这是否意味着从 d 列到 b 列的cummax(按行)? -
实际上这意味着这些列的 cummax 逐行。我已按要求编辑了我的帖子。