我在使用 R 方面还很陌生,所以我可能没有命名,所以事情是正确的;-) 我想绘制三个不同线性模型的结果。为此,我循环遍历列名称,并将其保存在带引号的向量中。
lambdas <- c("lambda_of_antibody1", "lambda2", "lambda3")
在我的循环中,我计算线性模型并且必须使用
get()
,以便我可以访问列名称。然后我使用 sjPlot::plot_model
绘制回归线,但是,我收到错误消息:“模型中未找到某些指定的 terms
。可能拼写错误?”。
for (i in seq_along(lambdas)) {
fit <- lm(sd_cplx ~ get(lambdas[i]), data = df_dpcrsum)
plt <- sjPlot::plot_model(
fit,
type = "pred",
terms = lambdas[i]
) +
geom_point(
data = df_dpcrsum,
aes(
x = get(lambdas[i]),
y = sd_cplx
)
)
plots[[i]] <- plt
}
我的问题是,如何正确访问数据框的列?这可能很简单,但我找不到解决方案。
我意识到模型中的术语名称是 get(lambdas[i]) 而不是实际的列名称。所以我尝试使用
names(fit$coefficients)
重命名系数。但我收到同样的错误消息。可能有一种使用 enquo()
的方法,但恐怕我缺少对函数背后更深入的理解。因此,我将非常感谢您的帮助!如果我提供了足够的信息或者遗漏了一些重要的细节,请告诉我。
由于您没有提供任何样本数据,因此无法验证。试试这个(假设你的数据框名为 df):
plots <- list()
for (i in seq_along(lambdas)) {
fit <- lm(sd_cplx ~ df[[lambdas[i]]], data = df)
plt <- sjPlot::plot_model(
fit,
type = "pred",
terms = lambdas[i] ### need to verify the terms in your dataframe
) +
geom_point(
data = df,
aes(
x = .data[[lambdas[i]]],
y = sd_cplx
)
)
plots[[i]] <- plt
}