我正在尝试根据用户输入创建设计矩阵
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)
工作正常
答案 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")