Ошибка model.matrix: оператор $ недопустим для атомарных векторов - PullRequest
0 голосов
/ 15 января 2019

Я столкнулся с этой ошибкой при использовании 'model.matrix'.

data_A <- data.frame(X1 = c("Y","N"), X2 = c(20,24), Y = c("N","Y"))
data_A
model.matrix("Y ~ X1 + X2", data_A)
Error: $ operator is invalid for atomic vectors

В чем причина проблемы?

1 Ответ

0 голосов
/ 15 января 2019

Изучите ?model.matrix. Фрагмент:

     ## Default S3 method:
     model.matrix(object, data = environment(object),
                  contrasts.arg = NULL, xlev = NULL, ...)

Arguments:

  object: an object of an appropriate class.  For the default method, a
          model formula or a ‘terms’ object.

Ваш object является строковой формулой, а data равен data_A. Аргумент object должен быть формулой или термином объекта, как указано. Попробуйте

model.matrix(Y ~ X1 + X2, data_A)

или эквивалентно (если вы строите формулу из строки)

model.matrix(as.formula(Y ~ X1 + X2), data_A)
...