Как вставить формулу в функцию model.matrix в R? - PullRequest
0 голосов
/ 26 сентября 2018

В качестве упрощенного примера, скажем, у вас есть следующие данные:

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 голосов
/ 26 сентября 2018

Вы имеете в виду что-то подобное?

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

Вам необходимо указать df в качестве аргумента data вне as.formula, так как аргумент data определяет среду, в которойоцените формулу.

Если вы не хотите указывать аргумент data, вы можете сделать

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