我的輸入文件不同:可變長度中的R(具有lme4線性建模)
Treat1 Treat2 Batch gene1 gene2 High Low 1 92.73 4.00 Low Low 1 101.85 6.00 High High 1 136.00 4.00 Low High 1 104.00 3.00 High Low 2 308.32 10.00 Low Low 2 118.93 3.00 High High 2 144.47 3.00 Low High 2 189.66 4.00 High Low 3 95.12 2.00 Low Low 3 72.08 6.00 High High 3 108.65 2.00 Low High 3 75.00 3.00 High Low 4 111.39 5.00 Low Low 4 119.80 4.00 High High 4 466.55 11.00 Low High 4 125.00 3.00
有數以萬計的附加列的,每一個報頭和號碼的列表,相同的長度,「基因1」柱。
我的代碼:
library(lme4)
library(lmerTest)
# Import the data.
mydata <- read.table("input_file", header=TRUE, sep="\t")
# Make batch into a factor
mydata$Batch <- as.factor(mydata$Batch)
# Check structure
str(mydata)
# Get file without the factors, so that names(df) gives gene names.
genefile <- mydata[c(4:2524)]
# Loop through all gene names and run the model once per gene and print to file.
for (i in names(genefile)){
lmer_results <- lmer(i ~ Treat1*Treat2 + (1|Batch), data=mydata)
lmer_summary <- summary(lmer_results)
write(lmer_summary,file="results_file",append=TRUE, sep="\t", quote=FALSE)
}
結構:
'data.frame': 16 obs. of 2524 variables:
$ Treat1 : Factor w/ 2 levels "High","Low": 1 2 1 2 1 2 1 2 1 2 ...
$ Treat2 : Factor w/ 2 levels "High","Low": 2 2 1 1 2 2 1 1 2 2 ...
$ Batch : Factor w/ 4 levels "1","2","3","4": 1 1 1 1 2 2 2 2 3 3 ...
$ gene1 : num 92.7 101.8 136 104 308.3 ...
$ gene2 : num 4 6 4 3 10 3 3 4 2 6 ...
我的錯誤消息:
錯誤model.frame.default(數據= MYDATA,降.unused.levels = TRUE,formula = i〜: 個可變長度不同(發現 'Treat1') 電話:... 11聚物 - >評估 - >評估 - > - > model.frame.default 執行暫停
我曾試圖檢查所涉及的所有對象並且看不到可變長度的任何差異,並且我也確保沒有缺失數據。使用na.exclude運行它不會改變任何內容。
有什麼想法發生了什麼?
您的起始位置是添加打印語句以確定導致問題的列。由於我們沒有您的數據,因此診斷問題可能相當困難。 – lmo
您的數據中沒有「i」列。因此,'lmer'看起來在數據之外並且發現字符向量'i'。嘗試'lmer_results < - lmer(as.formula(paste0(i,'〜Treat1 * Treat2 +(1 | Batch)「)),data = mydata)' – Roland