我试图对每个相对于x的变量进行线性回归 x y1 y2 y3
这是我正在使用的代码
gen <-read.table("CH0032_time_soma.out",sep = "\t",header=TRUE)
dat<-gen[,c(1,3:1131)]
dat_y<-(dat[,c(2:1130)])
dat_x<-(dat[,c(1)])
for(i in names(dat_y)){
model = lm(i~dat_x,dat)
}
我一直收到此错误
Error in model.frame.default(formula = i ~ dat_x, data = dat, drop.unused.levels = TRUE) :
invalid type (list) for variable 'dat_x'
Calls: lm -> eval -> eval -> <Anonymous> -> model.frame.default
Execution halted
我完全没有尝试解决此问题,是否有人有任何想法如何解决这个问题?
由于
答案 0 :(得分:4)
要回答这个问题,我们必须以某种形式回答:“R名称何时不是R名称?”答案是:“它们来自names
- 函数。” names
- 函数的结果不是R名称,而是R字符向量。在lm的第一个参数中的波浪号实际上是构建一个R公式对象,其最简单的形式有一个或两个R名称(也称为符号)。公式和名称/符号是“语言对象”,而数字和字符向量则不是。 (它们是文字,它们的值本身。)您需要使用as.formula在lm调用之外构建一个公式,或者您需要以lm函数可以将R名称与它们的数据匹配的方式传递列指向。
dat_y<-(dat[,c(2:1130)])
dat_x<-(dat[,c(1)])
models <- list()
#
for(i in names(dat_y)){
y <- dat_y[i]
model[[i]] = lm( y~dat_x )
}