gpt4 book ai didi

r - 如何在R中将list()转换为省略号?

转载 作者:行者123 更新时间:2023-12-04 17:16:58 24 4
gpt4 key购买 nike

假设我有两个使用三个点构造作为其参数的函数。

我想检索第一个函数的省略号,并为第二个函数创建一个全新的参数列表。

如何将新创建的列表传递给第二个函数?

这是一个示例代码:

first.function <- function(..., name) {
argument.list <- list(...)

new.args <- list()
for (i in 1:length(argument.list)) {
new.args[[i]] <- argument.list[[i]]^2
}
new.args[[length(new.args) + 1]] <- name

do.call(second.function, new.args)
}

second.function <- function(..., name) {
print(paste("This is the name:", name))
print(paste("These are the arguments:", ...))
}

first.function(1, 2, 3, name = "Test")

我尝试使用do.call,但出现错误消息:

Error in paste("This is the name:", name) : argument "name" is missing, with no default



这是因为第二个函数无法将name参数识别为与省略号参数分开的参数。

预期结果是:

This is the name: Test

These are the arguments: 1, 4, 9

最佳答案

只需命名参数:

first.function <- function(..., name) {
argument.list <- list(...)

new.args <- lapply(argument.list, `^`, 2)
new.args[["name"]] <- name

do.call(second.function, new.args)
}

first.function(1, 2, 3, name = "Test")
#[1] "This is the name: Test"
#[1] "These are the arguments: 1 4 9"

这是语言定义相关部分的链接: 4.3.2 Argument matching

关于r - 如何在R中将list()转换为省略号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37118274/

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