【发布时间】:2020-11-25 09:45:01
【问题描述】:
我正在使用tidyeval 编写一个简单的函数,我需要将参数传递给公式接口。尽管我已经设法构建了该函数的工作版本,但它似乎不适用于 for 循环。
功能
foo <- function(data, x, y) {
BayesFactor::ttestBF(
paired = FALSE,
data = data,
formula = rlang::new_formula(rlang::enexpr(y), rlang::enexpr(x))
)
}
foo(mtcars, am, wt)
#> Bayes factor analysis
#> --------------
#> [1] Alt., r=0.707 : 1383.367 ±0%
#>
#> Against denominator:
#> Null, mu1-mu2 = 0
#> ---
#> Bayes factor type: BFindepSample, JZS
使用循环
我在这里也试过!!col.name[i]
df <- dplyr::select(mtcars, am, wt, mpg)
col.name <- colnames(df)
for (i in 2:length(col.name)) {
foo(
data = mtcars,
x = am,
y = col.name[i]
)
}
#> Error in `[.data.frame`(data, , dv): undefined columns selected
【问题讨论】:
-
{{仅在由 tidyeval 提供支持的 NSE 参数中执行某些操作。new_formula()不是 NSE 函数,所以{{就像用括号括起来一样,什么都不做。你能从你的例子中删除这些{{以避免混淆吗? -
你试过
as.name(col.name[i])吗?