从函数调用中获取参数值

Get argument value from function call

如何在函数调用中获取(可能未填充的)参数值?我正在尝试获取 linout 对于拟合 nnet 模型是真还是假的信息。

示例:

library(nnet)
df <- data.frame(a = runif(10), b = runif(10), c = runif(10) > .5)
fit <- nnet(c ~ ., data = df, size = 3)
fit$call
> nnet.formula(formula = c ~ ., data = df, size = 3)

在这里我知道 linoutFALSE 因为这是默认值。但也可能是这样的:

nnet.formula(formula = c ~ ., data = df, size = 3, lin = T)

在这里,我需要做一些从 linlinout 的部分匹配并得到 T

有(至少)两个 nnet 方法。您正在使用公式方法并使用部分匹配为 linout 提供参数。这将测试是否有任何参数名称以 "lin":

开头
fit <- nnet(c ~ ., data = df, size = 3, lin=TRUE)
# weights:  13
# snipped output
fit$call
nnet.formula(formula = c ~ ., data = df, size = 3, lin = TRUE)
as.logical( max( unlist( lapply(names(fit$call), grep, patt="lin"))) )
#[1] TRUE

看看 lapply 如何处理调用对象很有趣:

> fit$call
nnet.formula(formula = c ~ ., data = df, size = 3, lin = FALSE)
> lapply(fit$call, class)
[[1]]
[1] "name"

$formula
[1] "call"

$data
[1] "name"

$size
[1] "numeric"

$lin
[1] "logical"