【问题标题】:How to paste formula into model.matrix function in R?如何将公式粘贴到 R 中的 model.matrix 函数中?
【发布时间】:2018-09-26 04:10:42
【问题描述】:

通过简化示例,假设您有以下数据:

n <- 10
df <- data.frame(x1 = rnorm(n, 3, 1), x2 = rnorm(n, 0, 1))

并且您希望创建以下形式的模型矩阵:

model.matrix(~ df$x1 + df$x2)

或更优选:

model.matrix(~ x1 + x2, data = df)

而是将公式粘贴到model.matrix。我已经尝试了以下方法,但都遇到了错误:

form1 <- "df$x1 + df$x2"
model.matrix(~ as.formula(form1))
model.matrix(~ eval(parse(text = form1)))
model.matrix(~ paste(form1))
model.matrix(~ form1)

我也尝试过使用更可取的结构:

form2 <- "x1 + x2, data = df"

这个问题有直接的解决办法吗?还是model.matrix函数不利于这种做法?

【问题讨论】:

  • 有理由不直接使用model.matrix(~ ., df)吗?
  • 理想情况下是的,数据框包含很多不是解释变量的列。
  • 子集调用中的数据:model.matrix(~ ., df[c("x1", "x2")])

标签: r model.matrix


【解决方案1】:

你的意思是这样的吗?

expr <- "~ x1 + x2"
model.matrix(as.formula(expr), df)

您需要在as.formula 之外将df 作为data 参数提供,因为data 参数定义了计算公式的环境。

如果您不想指定 data 参数,您可以这样做

model.matrix(as.formula("~ df$x1 + df$x2"))

【讨论】:

  • 是的,谢谢你,我很生气自己不玩波浪号。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-02-26
  • 2022-10-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多