2012-04-05 43 views
-2

是否可以僅評估一些變量?是否可以僅評估一些變量?

t<- function(a,b,c){a+b+c} 
t(1,2,c) 

產生錯誤

錯誤在A + B + C:非數值參數二元運算

+1

你到底是希望/希望發生什麼情況? – Dason 2012-04-05 02:36:42

+0

我想通過評估除了一個變量之外的所有變量來從多變量函數中產生一個單變量函數。 – user182814 2012-04-05 02:44:18

+0

那麼在你的例子中你會做一個c的函數?定義一個新功能是不可能的。類似於't2 = function(c){t(1,2,c)}' – Dason 2012-04-05 02:46:30

回答

1

您可以設置一些默認值,這樣,你不必須輸入所有的參數。

fun <- function(a=0, b=0, c=0){return(a + b + c)} 
fun(1, 2, 3) 
#[1] 6 
fun(4, 5) 
#[1] 9 
fun() 
#[1] 0 

請注意,您可能不應該調用函數't',因爲已經有一個相當重要的函數名爲t。

我猜你正在嘗試一個稍微複雜的例子。否則,你可以用sum來完成這個任務。


編輯:看來你只是想通過一些參數的值設置爲把一個多參數函數轉換成一個單一的參數功能。你可以定義一個新功能來做你想做的事。

newfun <- function(c){return(fun(1, 2, c))} 
newfun(1) 
#[1] 4 
newfun(5) 
#[1] 8 
0
> t<- function(a,b,c){if(missing(c)) { function(c){a+b+c}} else{a+b+c} } 
> t(1,2)(4) 
[1] 7 
> t(1,2) 
function(c){a+b+c} 
<environment: 0x159956028> 
> t(1,2,3) 
[1] 6