【问题标题】:Creating a function in R with variable number of arguments,在 R 中创建一个具有可变数量参数的函数,
【发布时间】:2018-07-19 13:30:00
【问题描述】:

在 R 中创建函数时,我们通常会指定参数的个数,例如

function(x,y){
}

这意味着它只需要两个参数。但是当没有指定参数的数量时(对于一种情况我必须使用两个参数,但另一种情况我必须使用三个或更多参数)我们如何处理这个问题?我对编程很陌生,因此将不胜感激。

【问题讨论】:

  • 您可以交出一个包含所有变量的列表,而不是每个变量。该列表可以是任意长度。所以 x 将是一个列表。
  • 你在找ellipsis

标签: r function


【解决方案1】:
d <- function(...){
    x <- list(...) # THIS WILL BE A LIST STORING EVERYTHING:
    sum(...)       # Example of inbuilt function
}

d(1,2,3,4,5)

[1] 15 

【讨论】:

  • 将它放在一个列表中可能适合 Lzz0 想要做的任何事情,但仅供参考,在您的示例中,您可以跳过列表并取消列出,然后执行 sum(...)
  • 谢谢,但我想到了另一个想法。如果我想使用一个列表进行求和,使用另一个列表进行减法,情况会怎样。我的意思是我可以给出两组列表(每组的变量数量不具体)。
  • 您需要使用示例更新问题。或者也许问一个不同的问题。我真的无法理解你的意思。如果您需要减去两个列表,您可以使用 Map
  • 假设,在您的示例中,如果我将 d (1,2,3,....10,11) 放入任何数字,最后两个数字总是给我它们的乘法,而其他数字则是它们的总和。我的意思是我想从一个输入列表中返回两个输出。
  • d=function(...){x=list(...);c(sum=sum(unlist(head(x,-2))),prod=prod(unlist(tail(x,2))))} 这可以解决问题
【解决方案2】:

您可以使用... 指定额外数量的参数。例如:

myfun <- function(x, ...) {
    for(i in list(...)) {
        print(x * i)
    }
}

> myfun(4, 3, 1)
[1] 12
[1] 4
> myfun(4, 9, 1, 0, 12)
[1] 36
[1] 4
[1] 0
[1] 48
> myfun(4)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-11-23
    • 1970-01-01
    • 2020-08-11
    • 2023-03-25
    • 1970-01-01
    • 2014-11-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多