Domanda

Ho una serie di dati di rilievo, e mi piacerebbe per generare trame di una particolare variabile, raggruppati per paese del rispondente. Il codice che ho scritto per generare le trame finora è:

countries <- isplit(drones, drones$v3)
foreach(country = countries) %dopar% {
  png(file = paste(output.exp, "/Histogram of Job Satisfaction in ", country$key[[1]], ".png", sep = ""))
  country.df <- data.frame(country)  #ggplot2 doesn't appreciate the lists nextElem() produces
  ggplot(country.df, aes(x = value.v51)) + geom_histogram()
  dev.off()
}

La cosa veramente bizzarra? Posso eseguire l'isplit (), impostare country <- nextElem(countries), e quindi eseguire attraverso il codice senza inviare la linea foreach - e ottenere una trama bella. Se invio il foreach, ho alcuni file .png vuote.

Grazie in anticipo per il vostro aiuto.

posso sicuramente fare questo con lo standard R loop, ma mi piacerebbe davvero ottenere una migliore comprensione su foreach.

È stato utile?

Soluzione

È necessario print la trama, se si vuole visualizzare:

print(ggplot(country.df, aes(x = value.v51)) + geom_histogram())

Per impostazione predefinita, i comandi ggplot restituire un oggetto trama, ma il comando stesso non visualizza la trama; che è fatto con il comando print. Si noti che quando si esegue il codice in modo interattivo, risultati dei comandi vengono stampati è per questo che spesso non è necessario lo stampa esplicito. Ma quando avvolgendoli in un foreach, è necessario stampare in modo esplicito dal momento che i risultati dei comandi nel corpo non sarà eco.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top