是否有可能只评估一些变量?

时间:2012-04-05 02:24:45

标签: r

是否可以只评估一些变量?

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

产生错误

  

a + b + c中的错误:二元运算符的非数字参数

2 个答案:

答案 0 :(得分: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

答案 1 :(得分: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