2016-04-10 2 views
-1

Ich bin neu in R und verstehe nicht viel darüber, wie Es klappt. Ich versuche diesen Code auszuführen, aber der "Fehler in lm.fit (x, y, Offset = Offset, singular.ok = singular.ok, ...): 0 (nicht-NA) Fällen" erscheint ständig und meine Daten haben eigentlich keine NA. Also was soll ich tun?Fehler in lm.fit (x, y, Offset = Offset, singular.ok = singular.ok, ...) 0 nicht-na-Fälle (Mauser-Paket)

> library("moult") 
> 
> mym = read.csv("Test.csv", sep=";", head=T) 
> head(mym) 
    Age Sex MoultPresence  Score Prim Habitat Jul.Day 
1 Adult 1    1 5554210000 22 Beach  123 
2 Adult00 26 Estuary  124 
3 Adult 1    1 5555553200 35 Estuary  124 
4 Adult 1    1 4440000000 12 Beach  126 
5 Adult0 31 Mudflat  127 
6 Adult00 26 Mudflat  127 

> if (is.numeric(mym$Prim)) {scores <- format(mym$Prim, scientific = FALSE, trim = TRUE)} else {scores <- mym$Prim} 
> mscores <- substr(scores, 1, 9) 
> mym$Date <- date2days(mym$Date, dateformat = "dd-mm-yyyy", startmonth = 9) 
> m88.2 <- moult(Prim ~ Jul.Day, data = mym) 
Error in lm.fit(x, y, offset = offset, singular.ok = singular.ok, ...) : 
    0 (non-NA) cases 

> summary(m88.2) 
Error in summary(m88.2) : object 'm88.2' not found 

> m88c <- moult(Prim ~ Jul.Day, data = mym, type = 3) 
Error in lm.fit(x, y, offset = offset, singular.ok = singular.ok, ...) : 
    0 (non-NA) cases 

> summary(m88c) 
Error in summary(m88c) : object 'm88c' not found 

> durationmean2ab <- function(duration, mean) { 
+ ab <- c(-mean/duration, 1/duration) 
+ names(ab) <- c("intercept", "slope") 
+ return(ab) 
+ } 
> uz1 <- durationmean2ab(coef(m88c, "duration"), coef(m88c, "mean")) 
Error in coef(m88c, "mean") : object 'm88c' not found 

> 
> ssex <- ifelse(mym$Sex == 1 | mym$Sex == 3, "male", ifelse(mym$Sex == 2 | mym$Sex == 4, "female", NA)) 
> mym$ssex <- as.factor(ssex) 
> mmf <- moult(Prim ~ Jul.Day | ssex | ssex, data = mym, type = 3) 
Error in lm.fit(x, y, offset = offset, singular.ok = singular.ok, ...) : 
    0 (non-NA) cases 

Konnte jemand von Ihnen irgendeine Idee haben, wie man es repariert?

+0

Willkommen bei Stack Overflow! Dies wird wahrscheinlich ein bisschen schwierig sein, da das 'Mauser'-Paket ziemlich spezialisiert ist. Jemand muss durch die Eingeweide von "Mauser" arbeiten, um herauszufinden, was schief läuft. Können Sie bitte Daten und/oder Code angeben, der uns ein [reproduzierbares Beispiel] liefert (http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example)? Alternativ könntest du vielleicht mehr Glück auf der Mailingliste "r-sig-ecology @ r-project.org" haben. –

Antwort

1

Es das Handbuch zu lesen hilft ... einen kurzen Blick auf die vignette for the moult package (Hervorhebung hinzugefügt) Unter:

formula fünf Teile aufweisen kann, von denen die ersten beiden (moult.index und days) muss immer zur Verfügung gestellt werden:

moult.index ~ Tage | x1 + x2 | y1 + y2 | z1

Auf der linke Seite des ~ den Vektor der Häutung Indizes (zwischen 0 und 1, ein für jeden individual) gegeben wird, nachdem der der erste Teil ~ erfordert einen Vektor von entsprechenden Tagen auf wurden diese Personen beobachtet (Anzahl der Tage seit, zB 1. Juli).

Früher im selben Dokument:

Dieser Häutung Index der ursprüngliche Summe von Mauser Partituren sein kann, oder eine Transformation dieser den Index linear zu machen ... Es ist bequem zu skalieren

: dieser Index von 0 bis 1.

Also würde ich schlage vor, beginnend mit reichen

mym <- transform(mym, Prim_scaled = (Prim-min(Prim))/(max(Prim)-min(Prim))) 
moult(Prim_scaled ~ Jul.Day, data = mym) 

Dies scheint OK zu arbeiten (mit Mauser Version 1.4) mit der Teilmenge der Daten, die Sie uns haben gezeigt:

mym <- read.table(header=TRUE, 
        text=" 
Age Sex MoultPresence  Score Prim Habitat Jul.Day 
1 Adult 1    1 5554210000 22 Beach  123 
2 Adult00 26 Estuary  124 
3 Adult 1    1 5555553200 35 Estuary  124 
4 Adult 1    1 4440000000 12 Beach  126 
5 Adult0 31 Mudflat  127 
6 Adult00 26 Mudflat  127") 

mym <- transform(mym, Prim_scaled = (Prim-min(Prim))/(max(Prim)-min(Prim))) 
moult(Prim_scaled ~ Jul.Day, data = mym) 

Sofern Sie ein reproduzierbares Beispiel zur Verfügung stellen können, können wir wahrscheinlich nicht weiter erhalten .

+0

Hallo Ben, danke für den Vorschlag. Versucht, meine Daten zu transformieren, aber ich bekomme immer noch den gleichen Fehler. –

+0

Versucht, eine Federmassedaten einzuschließen und es half, aber jetzt habe ich einen anderen Fehler '> feather.mass <- c (20.4, 20.8, 21.5, 22.8, 24.4, 25.6, 26.3, 25.7, 25.7) > mym $ Prim <- ms2pfmg (mscores, feder.masse) > mym $ Datum <- date2days (mym $ Datum, datumformat = "tt-mm-jjjj", startmonth = 9) > m88.2 <- maus (Prim ~ Jul .Day, data = mym) Fehler in der Matrix (unlist (Wert, recursive = FALSE, use.names = FALSE), nrow = nr,: Länge von 'dimnames' [2] ungleich Array Extent ' –