R语言 什么时候需要使用引号来引用我的框架中的一个列,什么时候我可以不使用引号?

63lcw9qa  于 2023-11-14  发布在  其他
关注(0)|答案(2)|浏览(88)

我是一个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(xmldas [i])而不是实际的列名。所以我试图使用names(fit$coefficients)重命名系数。但我得到了同样的错误消息。可能有一种方法可以使用enquo(),但我担心我错过了对函数背后更深层次的理解。所以,我会非常感谢您的任何帮助!请让我知道我是否提供了足够的信息,或者我是否错过了一些重要的细节。
下面是我的一个例子:

> head(df)
# A tibble: 6 × 5
  lambda_of_antibody1 mean_cplx sd_cplx lambda2 lambda3
                <dbl>     <dbl>   <dbl>   <dbl>   <dbl>
1                0.05    0.538     8.14  0.0525  0.0526
2                0.1     0.442    16.7   0.11    0.111
3                0.15    0.696    25.4   0.173   0.176
4                0.2     0.0541   35.1   0.24    0.248
5                0.25    0.479    45.5   0.312   0.328
6                0.3     0.358    55.9   0.39    0.417

ibps3vxo

ibps3vxo1#

由于您没有提供任何示例数据,因此无法验证。请尝试以下操作(假设您的框架名为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
}

字符串

k0pti3hp

k0pti3hp2#

找到解决方案:

lambdas <- c("lambda_of_antibody1", "lambda2", "lambda3")
plots <- list()

for (i in seq_along(lambdas)) {
        formula <- as.formula(paste("sd_cplx ~", lambdas[i]))
        fit <- lm(formula, data = df_dpcrsum)
        plt <- sjPlot::plot_model(
            fit,
            type = "pred",
            terms = lambdas[i]
        ) +
            geom_point(
                data = df_dpcrsum,
                aes(
                    x = .data[[lambdas[i]]],
                    y = sd_cplx
                )
            )

        plots[[i]] <- plt
    }

字符串
感谢您的输入,YBS:-)

相关问题