gpt4 book ai didi

r - 如何使用 "..."传递一些(但不是全部)进一步的参数

转载 作者:行者123 更新时间:2023-12-05 00:25:45 25 4
gpt4 key购买 nike

我的一个正在进行的函数调用 grep()value = TRUE硬编码。我想传递所有进一步的参数 除了 valuegrep()通过与 ... .下面的两个函数是我到目前为止所做的测试,都没有完成工作。

使用 时排除一个或多个进一步参数的最佳方法是什么? ... ?

练习功能一:

f <- function(pattern, x, ...)
{
dots <- list(...)
if('value' %in% names(dots))
dots <- dots[!grepl('value', names(dots))]
grep(pattern, x, value = TRUE, ...)
}

XX <- c('bct', 'abc', 'fds', 'ddabcff', 'jkl')
## test f()
f('abc', XX, value = TRUE) ## to test the error if user enters 'value' argument
# Error in grep(pattern, x, value = TRUE, ...) :
# formal argument "value" matched by multiple actual arguments
f('abc', XX, invert = TRUE)
# [1] "bct" "fds" "jkl"
f('ABC', XX, ignore.case = TRUE)
# [1] "abc" "ddabcff"

练习功能2:
h <- function(pattern, x, ...) x[grep(pattern, x, ...)]    
## test h()
h('abc', XX, value = TRUE)
# [1] NA NA
h('abc', XX, invert = TRUE)
# [1] "bct" "fds" "jkl"
h('ABC', XX, ignore.case = TRUE)
# [1] "abc" "ddabcff"

最佳答案

您可以组合 Currydo.call :

require(functional)
f <- function(pattern, x, ...)
{
dots <- list(...)
dots <- dots[!grepl('value', names(dots))]
do.call(Curry(grep, pattern=pattern, x=x, value=TRUE), dots)
}
Curry提供已知参数,和 dots... 中提供除“值”以外的所有内容.

关于r - 如何使用 "..."传递一些(但不是全部)进一步的参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23856089/

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