如何将公式粘贴到 R 中的 model.matrix 函数中?
How to paste formula into model.matrix function in R?
通过简化示例,假设您有以下数据:
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
功能不利于这种做法?
你的意思是这样的吗?
expr <- "~ x1 + x2"
model.matrix(as.formula(expr), df)
您需要将 df
作为 as.formula
之外的 data
参数,因为 data
参数定义了计算公式的环境。
如果您不想指定 data
参数,您可以这样做
model.matrix(as.formula("~ df$x1 + df$x2"))
通过简化示例,假设您有以下数据:
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
功能不利于这种做法?
你的意思是这样的吗?
expr <- "~ x1 + x2"
model.matrix(as.formula(expr), df)
您需要将 df
作为 as.formula
之外的 data
参数,因为 data
参数定义了计算公式的环境。
如果您不想指定 data
参数,您可以这样做
model.matrix(as.formula("~ df$x1 + df$x2"))