如何将公式粘贴到R中的model.matrix函数中?

时间:2018-09-26 04:10:42

标签: r model.matrix

通过简化示例的方式,说您具有以下数据:

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函数不利于这种方法?

1 个答案:

答案 0 :(得分:1)

你的意思是这样吗?

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

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

如果您不想指定data参数,则可以

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