2017-05-26 1 views
1

Je souhaite inclure un tracé dans un document MS Word à l'aide de la bibliothèque reporteRs.Ecrivez plusieurs instructions dans une fonction anonyme dans R

Voici comment j'inclure mon intrigue:

doc = addPlot(doc, 
    fun = function() plot(
    km.as.one, 
    mark.time=TRUE, 
    conf.int=FALSE, 
    cex=1, 
    col="blue", 
    xlab = "Délai en années", ylab = "Pourcentage", 
    lty=1:3, 
), 
    vector.graphic = TRUE, width = 5, height = 4, 
    par.properties = parProperties(text.align = "center") 
) 

Mon problème est que je voudrais ajouter quelques barres d'erreur, personnaliser l'axe et peut-être ajouter le titre, en ajoutant quelque chose comme suit:

axis(1, at = seq(0, 36, by = 6)) 
with (data=summary.km.as.one, expr=errbar(time, surv, upper, lower, add=TRUE, pch=0.5, cap=0.02)) 

Je dois écrire ceci en dehors de l'instruction plot, mais je n'ai pas trouvé comment l'écrire dans la fonction anonyme.

Est-il même possible d'écrire plusieurs instructions dans une fonction anonyme?

Si oui, quelle est la bonne façon, et sinon, y a-t-il une solution?

+1

Vous avez juste besoin d'utiliser '{}' pour contenir toutes vos déclarations. Donc 'fun = function() {plot (...); axe(...); avec (...)} '. – MrFlick

Répondre

1

il suffit d'ajouter des accolades { } et vous pouvez ajouter plusieurs lignes:

doc = addPlot(doc, 
    fun = function() { 
    # line 1 
    # line 2 
    # etc... 
    }, 
    vector.graphic = TRUE, width = 5, height = 4, 
    par.properties = parProperties(text.align = "center") 
) 
+0

Je me demande comment je ne pouvais pas voir cela dans tous ces tutoriels ... Merci monsieur! –

+0

@DanChaltiel Pas de problème. Comme suggestion de style, c'est une bonne idée de toujours inclure des accolades pour les fonctions 'if',' for', et même si elles ne sont que d'une ligne. De cette façon, il est visuellement clair quelles lignes sont dans ces blocs et vous permet également d'ajouter facilement des lignes dans le futur. – Paolo