Meine Eingabedatei:Variable Längen unterscheiden sich in R (lineare Modellierung mit 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
Es gibt Zehntausende von zusätzlichen Spalten, die jeweils mit einem Header und einer Liste von Zahlen, gleiche Länge wie „gene1“ Säule.
Mein Code:
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)
}
Struktur:
'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 ...
Meine Fehlermeldung:
Fehler bei model.frame.default (data = mydata, Tropfen .unused.levels = TRUE, Formel = i ~: variable Längen unterscheiden Calls (für 'Treat1' gefunden): -> eval - lmer ...> eval -> -> model.frame.default Execution
gestoppt
Ich habe versucht, alle Objekte zu untersuchen beteiligt und kann keine Unterschiede in den variablen Längen sehen, und ich habe auch sichergestellt, dass keine Daten fehlen. Wird na.exclude ausgeführt, ändert sich nichts.
Irgendeine Idee von was ist los?
Ein Ausgangspunkt für Sie ist, eine Druckanweisung hinzuzufügen, um herauszufinden, welche Spalte das Problem verursacht. Da wir Ihre Daten nicht haben, kann es sehr schwierig sein, das Problem zu diagnostizieren. – lmo
Sie haben in Ihren Daten keine Spalte "i". Daher sieht "lmer" außerhalb der Daten und findet den Zeichenvektor "i". Versuchen Sie 'lmer_results <- lmer (as.formula (paste0 (i," ~ Treat1 * Treat2 + (1 | Batch) ")), data = mydata)' – Roland