从函数调用中获取参数值

时间:2015-02-28 18:31:24

标签: r neural-network

如何在函数调用中获取(可能未填充)参数值?如果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

1 个答案:

答案 0 :(得分:1)

有(至少)两种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"