在函数中传递R中的参数,错误未使用的参数

时间:2016-10-25 06:07:44

标签: r function

考虑第一个功能:

fruits <- function(apples, oranges){
   apples + oranges
}

#example#
> fruits(2,3) 
[1] 5

第二个函数使用第一个函数fruits

fruitsandvegetables <- function(tomatoes){
   fruits(apples, oranges) + tomatoes
}

现在考虑以下错误:

> fruitsandvegetables(3)
  Error in fruits(apples, oranges) : object 'apples' not found
> fruitsandvegetables(3, apples = 2, oranges = 3)
  Error in fruitsandvegetables(3, apples = 2, oranges = 3) : 
  unused arguments (apples = 2, oranges = 3)
> fruitsandvegetables(tomatoes = 3, apples = 2, oranges = 3)
  Error in fruitsandvegetables(tomatoes = 3, apples = 2, oranges = 3) : 
  unused arguments (apples = 2, oranges = 3)

我理解这些错误,但我想知道是否有一种简单的方法来解决这个问题。对于具有许多参数的更复杂的函数,重写函数可能非常繁琐。

换句话说,我希望函数以这种方式运行:

fruitsandvegetables(3, apples = 2, oranges =3)
[8]

2 个答案:

答案 0 :(得分:4)

试试这个,

fruitsandvegetables <- function(tomatoes, ...){
  fruits(...) + tomatoes
}

注意:如果番茄变成水果,可能会出现问题

答案 1 :(得分:0)

fruitsandvegetables函数无法知道applesoranges是什么。

您可以将这两个参数作为参数包含在函数中,如

fruitsandvegetables <- function(tomatoes, apples, oranges) {
     fruits(apples, oranges) + tomatoes 
}

fruitsandvegetables(3, apples = 2,oranges = 3)
#[1] 8

此外,

fruitsandvegetables(3,2,3)
#[1] 8