在 R 中使用字符串变量引用公式中的列名称

标签 r

我尝试使用变量 target 引用公式中的列名称,该变量由粘贴的字符串组成。

target = paste0("C","_inf")
model.matrix(target~., model.df)

这会导致错误

Error in model.frame.default(object, data, xlev = xlev) :
  variable lengths differ

但是,像 model.matrix(C_inf~., model.df) 中那样直接引用列的名称不会产生此类错误,并且会产生完美的模型矩阵。 我猜这是由 target 的类型为 chr 引起的,但我似乎无法弄清楚如何指定将其用作列名的占位符。有人可以告诉我哪里出了问题以及如何解决它吗? 非常感谢!

最佳答案

我们可以在pastereformulate中创建公式

model.matrix(reformulate(".", response = target), model.df)

或者使用粘贴

model.matrix(as.formula(paste0(target, "~.")), model.df)

或者可以使用胶水

model.matrix(glue::glue("{target}~ ."), model.df)

关于在 R 中使用字符串变量引用公式中的列名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67441645/

相关文章:

r - 为 R 构建 MXNET 库

区间内的 R 预测

在 renderPlot 中找不到 R Shiny 对象

mysql - 错误 : R cannot connect to MySQL

r - 有没有办法在 Rmarkdown 中指定全局选项 block 函数,以便通过切换命令仅显示/不显示某些图形?

r - ggplot2:无法使用 geom_ribbon 为相交线之间的区域着色

windows - 如何通过 R "shell"命令在 Windows 上设置 PATH

R Cran 无法连接到包页面

r - 将儒略日转换为 mm/dd 并从 r 中数据框中的另一列添加年份

r - 如何使用 R 合并两个没有公共(public)列名的数据框