1

我正在尝试将求和函数应用于 data.frame 的每一行。我的功能如下:

fun <- function(a, b, t) sum((a+b)^(0:t))

我正在使用以下 data.frame 来测试代码:

df <- data.frame(x = 1:3,
                 y = 1:3)

我希望它像这样工作:

fun(df$x, df$y, 0, 3)

本质上,我希望我的函数通过并找到的df总和t=0 to t=3(df$x + df$y)^t该函数适用于单个输入,但由于sum()函数的性质,这不适用于 data.frames。我知道我可以用循环来做到这一点,但我想保留求和的矢量化版本(也就是说,我喜欢使用:运算符)。

4

1 回答 1

2

用这个:

fun2 <- function(a, b, t1, t2) rowSums(outer(a+b, t1:t2, `^`))

比较结果:

> fun2(df$x, df$y, 0, 3)
[1]  15  85 259

> fun(df$x[1], df$y[1], 3)
[1] 15
> fun(df$x[2], df$y[2], 3)
[1] 85
> fun(df$x[3], df$y[3], 3)
[1] 259

另请注意,您的函数声明需要两个输入,t1并且t2.

于 2013-06-26T02:00:45.140 回答