繁体   English   中英

循环浏览R中的列

[英]Looping through columns in R

我正在尝试相对于xx 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

我无能为力地解决此问题的想法,有人对解决此问题有任何想法吗?

谢谢

要回答这个问题,我们必须以某种形式回答:“什么时候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 )
    }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM