Не могу создать матрицу дизайна из пользовательского ввода - PullRequest
0 голосов
/ 13 мая 2019

Я пытаюсь создать матрицу дизайна из пользовательского ввода

Data.csv:

X,Gender,Y
68,M,G1
74,M,G1
71,M,G1
71,M,G1

my_data <- read.csv("Data.csv")
var1   <-  "X"    'say it is user-input'
var1   <-  noquote(var1)
var1   <-  paste("my_data$", var1, sep="")
var1   <-  noquote(var1)
design <-  model.matrix(~0+var1, data=my_data) 

Произошла следующая ошибка

Ошибка в contrasts<- (*tmp*, value = contr.funs [1 + isOF [nn]]): контрасты могут применяться только к факторам с 2 или более уровнями

, тогда как

design <-  model.matrix(~0+my_data$X, data=my_data) 

работает нормально

1 Ответ

2 голосов
/ 13 мая 2019

Мы можем использовать as.formula для построения formula для использования в model.matrix на основе указанной пользователем предикторной переменной var1

var1 <- "X"
model.matrix(as.formula(sprintf("~ 0 + %s", var1)), data = df)

Это дает ту же матрицу дизайна, что и

model.matrix(~ 0 + X, data = df)

Пример данных

df <- read.csv(text =
    "X,Gender,Y
68,M,G1
74,M,G1
71,M,G1
71,M,G1")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...