gpt4 book ai didi

r - 使用运行时生成的省略号参数(点-点-点/三个点)调用 R 函数

转载 作者:行者123 更新时间:2023-12-01 13:28:20 29 4
gpt4 key购买 nike

我想调用一个使用 ...(省略号)参数的 R 函数来支持未定义数量的参数:

f <- function(x, ...) {
dot.args <- list(...)
paste(names(dot.args), dot.args, sep = "=", collapse = ", ")
}

我可以调用这个函数来传递设计时预定义的实际参数,例如。例如:

> f(1, a = 1, b = 2)
[1] "a=1, b=2"

如何为 ... 传递我只在运行时知道的实际参数(例如,来自用户的输入)?

# let's assume the user input was "a = 1" and "b = 2"
# ------
# If the user input was converted into a vector:
> f(1, c(a = 1, b = 2))
[1] "=c(1, 2)" # wrong result!
# If the user input was converted into a list:
> f(1, list(a = 1, b = 2))
[1] "=list(a = 1, b = 2)" # wrong result!

动态生成的 f 调用的预期输出应该是:

[1] "a=1, b=2"

我发现了一些关于如何使用 ... 的现有问题,但他们没有回答我的问题:

How to use R's ellipsis feature when writing your own function?

Usage of Dot / Period in R Functions

Pass ... argument to another function

Can I remove an element in ... (dot-dot-dot) and pass it on?

最佳答案

您可以通过使用 do.call 传递函数参数来实现。首先使用 as.list 强制列出。

例如

input <- c(a = 1, b = 2)
do.call(f, as.list(input))

input <- list(a = 1, b = 2)
do.call(f, as.list(input))

关于r - 使用运行时生成的省略号参数(点-点-点/三个点)调用 R 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47360937/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com