簡體   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