如何在函数调用中获取(可能未填充)参数值?如果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)
我知道linout
是FALSE
,因为这是默认值。但也可能有类似的东西:
nnet.formula(formula = c ~ ., data = df, size = 3, lin = T)
在这里,我需要从lin
到linout
进行部分匹配并获取T
答案 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"