Sto usando dlply() con una funzione personalizzata che ha una pendenza media di lm() che si adatta ai dati che contengono alcuni valori NA e ottengo l'errore "errore nella lm.fit (x, y, offset = compensati, singular.ok = singular.ok, ...): 0 casi (non-NA)"lm chiamato dall'interno dlply genera "0 (non-NA) casi" errore [r]
Questo errore si verifica solo quando chiamo dlply con due variabili chiave - la separazione di una variabile funziona bene.
Annoyingly Non riesco a riprodurre l'errore con un set di dati semplice, quindi ho pubblicato il set di dati problema nella mia casella personale.
Ecco il codice, come ridotto al minimo possibile, pur producendo un errore:
masterData <- read.csv("http://dl.dropbox.com/u/48901983/SOquestionData.csv", na.strings="#N/A")
workingData <- data.frame(sample = masterData$sample,
substrate = masterData$substrate,
el1 = masterData$elapsedHr1,
F1 = masterData$r1 - masterData$rK)
#This function is trivial as written; in reality it takes the average of many slopes
meanSlope <- function(df) {
lm1 <- lm(df$F1 ~ df$el1, na.action=na.omit) #changing to na.exclude doesn't help
slope1 <- lm1$coefficients[2]
meanSlope <- mean(c(slope1))
}
lsGOOD <- dlply(workingData, .(sample), meanSlope) #works fine
lsBAD <- dlply(workingData, .(sample, substrate), meanSlope) #throws error
Grazie in anticipo per qualsiasi comprensione.
Direi che l'errore è informativo. Se guardi i valori in ogni sottoinsieme dei tuoi dati, presumo che troverai un sottoinsieme di tutti i 'NA'. Prova a sostituire il tuo lm call nella tua funzione con qualcosa che possa identificare 'all (is.na())'. – Justin