我需要用 lapply 来拟合许多模型(一些模型具有交互作用,其他模型具有总和,其他模型仅具有一个独立变量),因此我为此目的应用以下代码
lapply(c('+', '*'), \(symb) lapply(c('A', 'B', ' '), \(regr) {
xnam <- 'indipendent'
fmla <- reformulate(paste(paste0(c(xnam, regr), collapse = symb), '+', '(1|C)'),
response = 'dipendent outcome')}))
不幸的是我得到了多余和错误的语法
[[1]]
[[1]][[1]]
`dipendent outcome` ~ indipendent + A + (1 | C)
<environment: 0x000002a5adcef840>
[[1]][[2]]
`dipendent outcome` ~ indipendent + B + (1 | C)
<environment: 0x000002a5ad9f9838>
[[1]][[3]]
`dipendent outcome` ~ indipendent + +(1 | C)
<environment: 0x000002a5a4dbf488>
[[2]]
[[2]][[1]]
`dipendent outcome` ~ indipendent * A + (1 | C)
<environment: 0x000002a5af17d7c0>
[[2]][[2]]
`dipendent outcome` ~ indipendent * B + (1 | C)
<environment: 0x000002a5897f99c8>
[[2]][[3]]
`dipendent outcome` ~ indipendent * +(1 | C)
<environment: 0x000002a5940a2818>
当“相同模型语法”已经可用时,我只想摆脱它。确实,以下语法
[[1]][[3]]
`dipendent outcome` ~ indipendent + +(1 | C)
<environment: 0x000002a5a4dbf488>
相当于
[[2]][[3]]
`dipendent outcome` ~ indipendent * +(1 | C)
<environment: 0x000002a5940a2818>
此外,因为我想将它们用作弹性对象的标题,所以我想获取双符号出现的位置,而只是单个符号:
[[1]][[3]]
`dipendent outcome` ~ indipendent + (1 | C)
<environment: 0x000002a5a4dbf488>
我尝试使用
str_replace
中的 stringr package
执行此操作,但它似乎不适用于公式对象。因此我想要实现的最终输出是:
[[1]]
[[1]][[1]]
`dipendent outcome` ~ indipendent + A + (1 | C)
<environment: 0x000002a5adcef840>
[[1]][[2]]
`dipendent outcome` ~ indipendent + B + (1 | C)
<environment: 0x000002a5ad9f9838>
[[1]][[3]]
`dipendent outcome` ~ indipendent + (1 | C)
<environment: 0x000002a5a4dbf488>
[[2]]
[[2]][[1]]
`dipendent outcome` ~ indipendent * A + (1 | C)
<environment: 0x000002a5af17d7c0>
[[2]][[2]]
`dipendent outcome` ~ indipendent * B + (1 | C)
<environment: 0x000002a5897f99c8>
有什么可能的方法来得到这个吗? 谢谢
测试回归量字符数严格大于零,并相应地创建回归量向量。
这意味着最后一个回归量是空字符串
''
,而不是空格 ' '
。
它还会为您节省一个
lapply
循环和 paste
指令。
lapply(c('A', 'B', ''), \(regr) {
xnam <- if(nchar(regr) > 0L) {
paste('independent', regr, sep = "*")
} else 'independent'
reformulate(
termlabels = c(xnam, '(1|C)'),
response = as.name('dependent outcome')
)
})
#> [[1]]
#> `dependent outcome` ~ independent * A + (1 | C)
#> <environment: 0x000001b523109978>
#>
#> [[2]]
#> `dependent outcome` ~ independent * B + (1 | C)
#> <environment: 0x000001b523112278>
#>
#> [[3]]
#> `dependent outcome` ~ independent + (1 | C)
#> <environment: 0x000001b52308a2c8>
创建于 2023-11-04,使用 reprex v2.0.2