【发布时间】:2013-03-22 01:59:50
【问题描述】:
我在 R 中创建了以下简单函数:
fun <- function(a,b,c,d,e){b+(c-a)*((e-b)/(d-a))}
我想将此函数应用于看起来像这样的data.frame:
> data.frame("x1"=seq(55,75,5),"x2"=round(rnorm(5,50,10),0),"x3"=seq(30,10,-5))
x1 x2 x3
1 55 51 30
2 60 45 25
3 65 43 20
4 70 57 15
5 75 58 10
我想将fun 应用于每个单独的行以创建一个新变量x4,但现在困难的部分来了(至少对我来说..):对于参数 d 和 e,我想使用这些值x2 和 x3 来自下一行。因此,对于示例的第一行,这意味着:fun(a=55,b=51,c=30,d=45,e=25)。我知道我可以使用mapply() 对每一行应用一个函数,但我不知道如何告诉 mapply 它应该使用下一行中的一些值,或者我是否应该寻找与 @ 不同的方法987654330@?
非常感谢!
【问题讨论】:
-
最后一行呢?
a=75, b=58, c=10和 d 和 e 是? -
好点!假设
d=X2+2 (so 60)和e=0。 (对于我的项目,最后一行实际上并不感兴趣)