2017-04-03 94 views
-4

假設我有一個函數,比如說f(x)如何編寫和計算總和/產品(的函數)在R

如何在x中給定限制的情況下寫出產品或此功能的總和。

對於fx=1例如產品,直到x=5 f(1)*f(2)*f(3)*f(4)*f(5)

此外,我需要這個了對於此種/雙款項。 考慮f(x,y)和總和,而x從1運行到3,y從0運行到x-1。 如果用數學,這將是這樣的: Sum[f[x, y], {x, 1, 3}, {y, 0, x - 1}] 和輸出將是這個 f[1, 0] + f[2, 0] + f[2, 1] + f[3, 0] + f[3, 1] + f[3, 2]

f爲了簡單沒有限定。

編輯:例如作爲請求:

其中x從1到3且y從0到X-1
f <- function (x,y) { 
x + 2*y 
} 

計算總和。 (這是等於22 BTW)

+2

請顯示一個可重複的例子 – akrun

+0

請確定'f'。如果'f'是矢量化的,你可以簡單地做'sum(f(1:5))'。如果不是,你可以矢量化它或使用for循環。 – Vandenman

+0

@Vandenman爲了簡單起見,我們假設'f < - function(x){x + x^2}' –

回答

1

你可以這樣做:

f <- function (x,y) { 
    x + 2*y 
} 
) 

#calculate f for all combinations 
tmp <- outer(1:3, 0:2, f) 

#discard undesired combinations and sum 
sum(tmp[lower.tri(tmp, diag = TRUE)]) 
#[1] 22 

或者您可以使用一個循環來只創建所需的組合。這太慢了:

inds <- lapply(1:3, function(x) data.frame(x = x, y = 0:(x-1))) 
inds <- do.call(rbind, inds) 
sum(do.call(f, inds)) 
#[1] 22