gpt4 book ai didi

r - 将 ... 参数传递给另一个函数

转载 作者:行者123 更新时间:2023-12-04 05:30:09 27 4
gpt4 key购买 nike

我正在基于 limma 包(bioconductor)的 makeContrasts 函数编写一个函数 foo(..., lev):

makeContrasts(..., contrasts=NULL, levels)

我想将 foo 'as-is' 的 ... 参数传递给 makeContrasts。这是我的代码:
foo = function(..., lev) {
e = substitute(list(...))
makeContrasts(e[[2]], levels=lev)
}

foo(a + b, design)

我使用 e[[2]] 的原因是 e 将是 列表(a+b)而 e[[1]] 是 列表但 e[[2]] 是我需要的: a + b

但问题是传递给 makeContrast 的实际参数是 e[[2]] 而不是 a + b .
那该怎么办呢?

完整的参数分配如下:
ct = factor(c("a","b"))
design = model.matrix(~0+ct)
colnames(design)=levels(ct)
makeContrasts(a+b,levels=design) # It works
foo(a+b, design) # Does not work

最佳答案

A 可能过度简化了问题,但以下方法不仅有效

foo = function(..., lev) {
makeContrasts(...,levels =lev)
}

foo(a + b,b+c, lev =letters[1:3])


## Contrasts
## Levels a + b b + c
## a 1 0
## b 1 1
## c 0 1

使用你的例子

我似乎没有过于简单化。

...包含要传递给另一个函数的参数,那么您只需要传递 ...到那个功能。 ...
ct = factor(c("a","b"))
design = model.matrix(~0+ct)
colnames(design)=levels(ct)
makeContrasts(a+b,levels=design)
## Contrasts
## Levels a + b
## a 1
## b 1
foo(a+b, lev = design)
## Contrasts
## Levels a + b
## a 1
## b 1

关于r - 将 ... 参数传递给另一个函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12735795/

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