[英]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.