无法根据用户输入创建设计矩阵

时间:2019-05-12 23:34:24

标签: r

我正在尝试根据用户输入创建设计矩阵

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*中的错误,值= contr.funs [1 + isOF [nn]]):               对比只能应用于2个或更多级别的因素

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

工作正常

1 个答案:

答案 0 :(得分:2)

我们可以根据用户指定的预测变量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")