Mostrar valores dos parâmetros no `call` de uma função

Para uso em um app Shiny, gostaria de mostrar o valor real dos parâmetros no call de uma função, ao em vez do objeto. Exemplo:

ctl <- c(4.17,5.58,5.18,6.11,4.50,4.61,5.17,4.53,5.33,5.14)
trt <- c(4.81,4.17,4.41,3.59,5.87,3.83,6.03,4.89,4.32,4.69)
group <- gl(2, 10, 20, labels = c("Ctl","Trt"))
weight <- c(ctl, trt)

singular_option <- TRUE

lm.D9 <- lm(weight ~ group, singular.ok = singular_option)

lm.D9$call

O resultado do call é: lm(formula = weight ~ group, singular.ok = singular_option)

Eu gostaria de ter: lm(formula = weight ~ group, singular.ok = TRUE)

Parece que este é um trabalho para o nosso amigo {rlang} e suas funções malucas

ctl <- c(4.17,5.58,5.18,6.11,4.50,4.61,5.17,4.53,5.33,5.14)
trt <- c(4.81,4.17,4.41,3.59,5.87,3.83,6.03,4.89,4.32,4.69)
group <- gl(2, 10, 20, labels = c("Ctl","Trt"))
weight <- c(ctl, trt)
singular_option <- TRUE
lm.D9 <- lm(weight ~ group, singular.ok = singular_option)

# valor está implicito
lm.D9$call
#> lm(formula = weight ~ group, singular.ok = singular_option)

# substitui pelo valor explicito
rlang::call_modify(lm.D9$call, singular.ok = singular_option)
#> lm(formula = weight ~ group, singular.ok = TRUE)

Created on 2021-07-27 by the reprex package (v2.0.0)

Considere também o pacote {shinymeta} que foi desenhado para garantir reprodutibilidade em shiny apps. É um pacote bem avançado e difícil de usar, mas achei bem legal.

Perfeito! Muito obrigado.

1 curtida