2010-06-01 27 views
1

J'ai quelques données que j'essaye de tracer facetté par son type avec un lisse (Loess, LM, peu importe) superposé. Code Generation est ci-dessous:Smooth Erreur dans qplot de ggplot2

testFrame <- data.frame(Time=sample(20:60,50,replace=T),Dollars=round(runif(50,0,6)),Type=sample(c("First","Second","Third","Fourth"),50,replace=T,prob=c(.33,.01,.33,.33))) 

Je n'ai pas de problème non plus faire un terrain à facettes, ou tracer le bon, mais je cannnot deux. Les trois premières lignes de code ci-dessous fonctionnent bien. La quatrième ligne est l'endroit où j'ai du mal:

qplot(Time,Dollars,data=testFrame,colour=Type) 
qplot(Time,Dollars,data=testFrame,colour=Type) + geom_smooth() 
qplot(Time,Dollars,data=testFrame) + facet_wrap(~Type) 
qplot(Time,Dollars,data=testFrame) + facet_wrap(~Type) + geom_smooth() 

Il donne l'erreur suivante:

Error in [<-.data.frame (*tmp* , var, value = list(NA = NULL)) : missing values are not allowed in subscripted assignments of data frames

Qu'est-ce que je manque de superposer une surface lisse dans un terrain à facettes? J'aurais juré que j'avais déjà fait ça, peut-être même avec les mêmes données.

Répondre

1

Cela fonctionne pour moi. Êtes-vous sûr d'avoir la dernière version de ggplot2?

+0

Téléchargé ggplot2 au cours des 2 dernières semaines. Je pense que l'erreur peut être causée lorsque l'un des types a seulement un enregistrement, ne permettant pas à loess() ou à lm() de calculer correctement. Calculer testFrame comme ci-dessous illustre cela. testFrame <- data.frame (Heure = échantillon (20: 60,50, remplacer = T), Dollars = rond (runif (50,0,6)), Type = c (rep ("Second", 10), exemple (c ("Premier", "Troisième", "Quatrième"), 40, remplacer = T, prob = c (.33, .34, .33)))) Ou vous pourriez simplement augmenter la probabilité de la " Deuxième "Type à échantillonner. – Jared

+0

Cet ensemble de données fonctionne toujours pour moi. – hadley