2013-06-26 2 views
1

data.frame의 각 행에 합계 함수를 적용하려고합니다.지수에서 벡터화 된 합계를 수행하고 전체 data.frame에 적용하는 방법

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

을 내가 코드를 테스트하기 위해 다음과 같은 data.frame을 사용하고 있습니다 :

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

:

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

그리고 내가 그것을 이런 식으로 뭔가를 작업 할 다음과 같이 내 기능입니다 본질적으로, 나는 내 함수가 df을 통과하고 t=0 to t=3(df$x + df$y)^t 인 것을 발견했다. 함수는 단일 입력에 대해서는 정상적으로 작동하지만 sum() 함수의 특성으로 인해 data.frames에서는 작동하지 않습니다. 루프를 사용하여이 작업을 수행 할 수 있다는 것을 알고 있지만 합계의 벡터화 된 버전을 유지하려고합니다 (즉, : 연산자 사용).

답변

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 

또한 함수 선언이 두 개의 입력, t1t2 필요 있습니다.

+0

이것은 완벽합니다. 정말 고맙습니다 – zap2008

관련 문제