Ich versuche, LME-Funktion aus NLME-Paket innerhalb einer FOR-Schleife zu verwenden. Ich habe jetzt (fast) alles versucht, aber ohne Glück. Ohne die Schleife funktionieren meine LME-Funktion einwandfrei. Ich habe 681 verschiedene Lipide zu analysieren, also brauche ich die Schleife.Erstellen einer Schleife für lme() in r
Bonus Info:
>dput(head("ex.lme(loop)")) structure(list(Lacal.Patient.ID = c(12L, 12L, 12L, 13L, 13L, 13L), Time = c(0L, 1L, 3L, 0L, 1L, 3L), Remission = c(0L, 0L, 1L, 0L, 0L, 1L), Age = c(46L, 43L, 36L, 47L, 34L, 45L), SEX = structure(c(1L, 1L, 1L, 2L, 2L, 2L), .Label = c("f", "m"), class = "factor"), BMI = c(25L, 26L, 23L, 27L, 26L, 27L), Sph = c(0.412, 1.713, 1.48, 0.735, 1.025, 1.275), S1P = c(2.412, 3.713, 3.48, 2.735, 3.025, 3.275), Cer..C16. = c(1.4472, 2.2278, 2.088, 1.641, 1.815, 1.965)), .Names = c("Lacal.Patient.ID", "Time", "Remission", "Age", "SEX", "BMI", "Sph", "S1P", "Cer..C16."), row.names = c(NA, 6L ), class = "data.frame")
:
- Ich habe wie diese str() und meine Daten haben die gleichen Längen vor der Schleife
Eine vereinfachte Version meiner Daten sehen verwendet
Hier ist was ich mache ich R:
library(nlme) attach(cer_data) Remission <- factor(Remission) Time <- factor(Time) SEX <- factor(SEX)
Wie ich denke, die Schleife sollte wie folgt aussehen:
lipid <-as.matrix(cer_data[,c(7:9)]) # my lipids a at row 7-9in my data
beg <- 1
end <- nrow(lipid)
dim(lipid)
for (i in beg:end) {
print(paste("Running entity: ", colnames(lipid)[i], " which is ",i, " out of", end))
variable <- as.numeric(lipid[i])
lme_cer <- lme(variable ~ Remission + Time + Age + BMI + SEX, random = ~1|Lacal.Patient.ID, method = "REML", data = cer_data)
}
Fehler: Fehler bei model.frame.default (Formel = ~ variable + + Remission Time +: für variable Längen abweichen (gefunden 'Erlass')
Ohne die Schleife meiner Analyse arbeitet gut (Lipid (x) ist nur eine der Lipide):
lme_cer <- lme(lipid(x) ~ Remission + Time + Age + BMI + SEX , random = ~1 | Lacal.Patient.ID, method = "REML", data = cer_data)
summary(lme_cer)
Kann jemand das Problem mit meiner Schleife sehen? Ich bin es nicht gewohnt, R zu programmieren oder zu benutzen, also gibt es wahrscheinlich dumme Fehler.
Jetzt machen Sie die lme für jede Zeile und es ist falsch. Schau dir 'end <- nrow (lipid)' an. Sie sollten einzigartige Lipide auswählen und die Schleife für sie machen. – Mateusz1981
und "dput" die Daten, die Sie verwenden, um die Frage reproduzierbar zu machen – Mateusz1981
Sie sollten neu bewerten, was in den Zeilen und Spalten Ihres Datensatzes ist. Vier Beobachtungen: Erstens, wenn Sie Ihre Lipiddaten erstellen, wählen Sie eine Anzahl von Spalten aus dem vollständigen Datensatz. Zweitens schreiben Sie aus irgendeinem Grund "meine Lipide sind in Reihe 1-881", was sicherlich nicht korrekt ist. Drittens erstellen Sie eine Schleife von '1 'bis' nrow (lipids)', auch wenn sich Ihre Variablen in den Spalten (und nicht in den Zeilen) befinden. Schließlich wählen Sie innerhalb der Schleife "lipid [i]", das weder eine Zeile noch eine Spalte auswählt, sondern nur ein einzelnes Element dieser Matrix. – SimonG