Wie man Code in RMarkdown versteckt, mit Option, es zu sehen
Schreibe ich eine RMarkdown Dokument in die möchte ich wieder einige Stücke (5 bis 9).
Es gibt keine anzeigen müssen diese Teile wieder, so dass ich als mit
```{r echo=FALSE}
machen, die erneut chunks unsichtbar, wie beschrieben, in einem anderen stackoverflow-Frage. Das ist in Ordnung und gibt die gewünschten Ergebnisse (verbesserte Passform des zweiten iteration - sehen in dieser Lösung umgesetzt hier).
In einer idealen Welt, allerdings würde der code erweiterbar sein, so dass der Benutzer sehen könnte was da genau Los ist, wenn Sie wollen, um für pädagogische Zwecke und Klarheit (z.B. siehe link zum Greasemonkey-Lösung hier) eher als versteckte, wie in meinem zweiten rpubs Beispiel. Die Lösung kann so Aussehen, aber mit einer kürzeren umliegenden Feld, um Ablenkung zu vermeiden:
for (i in 1:nrow(all.msim)){ # Loop creating aggregate values (to be repeated later)
USd.agg[i,] <- colSums(USd.cat * weights0[,i])
}
for (j in 1:nrow(all.msim)){
weights1[which(USd$age <= 30),j] <- all.msim[j,1] /USd.agg[j,1]
weights1[which(USd$age >= 31 & USd$age <= 50),j] <- all.msim[j,2] /USd.agg[j,2]
weights1[which(USd$age >= 51),j] <- all.msim[j,3] /USd.agg[j,3] ##
}
# Aggregate the results for each zone
for (i in 1:nrow(all.msim)){
USd.agg1[i,] <- colSums(USd.cat * weights0[,i] * weights1[,i])
}
# Test results
for (j in 1:nrow(all.msim)){
weights2[which(USd$sex == "m"),j] <- all.msim[j,4] /USd.agg1[j,4]
weights2[which(USd$sex == "f"),j] <- all.msim[j,5] /USd.agg1[j,5]
}
for (i in 1:nrow(all.msim)){
USd.agg2[i,] <- colSums(USd.cat * weights0[,i] * weights1[,i] * weights2[,i])
}
for (j in 1:nrow(all.msim)){
weights3[which(USd$mode == "bicycle"),j] <- all.msim[j,6] /USd.agg2[j,6]
weights3[which(USd$mode == "bus"),j] <- all.msim[j,7] /USd.agg2[j,7]
weights3[which(USd$mode == "car.d"),j] <- all.msim[j,8] /USd.agg2[j,8]
weights3[which(USd$mode == "car.p"),j] <- all.msim[j,9] /USd.agg2[j,9]
weights3[which(USd$mode == "walk"),j] <- all.msim[j,10] /USd.agg2[j,10]
}
weights4 <- weights0 * weights1 * weights2 * weights3
for (i in 1:nrow(all.msim)){
USd.agg3[i,] <- colSums(USd.cat * weights4[,i])
}
# Test results
plot(as.vector(as.matrix(all.msim)), as.vector(as.matrix(USd.agg3)),
xlab = "Constraints", ylab = "Model output")
abline(a=0, b=1)
cor(as.vector(as.matrix(all.msim)), as.vector(as.matrix(USd.agg3)))
#rowSums(USd.agg3[,1:3]) # The total population modelled for each zone, constraint 1
#rowSums(USd.agg3[,4:5])
#rowSums(USd.agg3[,6:10])
Ich bin zufrieden mit der echo=F
Lösung, wäre aber noch glücklicher mit eine erweiterbare code-snippet ein.
Edit: alle RPubs Beispiele mit Ausnahme des ersten wurden jetzt entfernt werden, um Verstopfungen zu vermeiden, Ihre hervorragende Veröffentlichung-system mit im wesentlichen gleichen Dokument.
InformationsquelleAutor der Frage RobinLovelace | 2013-01-02
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dieses gemacht wurde viel einfacher mit der rmarkdown Paket, aber die gab es nicht vor drei Jahren. Im Grunde kannst du einfach auf "code-folding": http://rmarkdown.rstudio.com/html_document_format.html#code_folding. Sie müssen nicht mehr, um beliebigen JavaScript-Code schreiben.
InformationsquelleAutor der Antwort Yihui Xie
Wenn Sie fügen Sie ein html-tag, bevor der code kann mit Hilfe von CSS-Selektoren zu tun kluge Dinge zu den bits des Ausgabe - markdown ausgezeichnet übergibt die HTML durch:
Hier meine CSS-Regel entspricht der ersten
<pre>
tag nach einem<div class=hidecode>
und setzt es, unsichtbar zu sein. Markdown schreibt die R-chunk mit zwei<pre>
- tags - eine für R und eine für die Ausgabe, und diese CSS fängt das erste.Jetzt wissen Sie, wie der code und output-Blöcke in CSS, können Sie alle Arten von kluge Dinge mit Ihnen in Javascript. Sie könnte etwas in die
<div class=hidecode>
- tag und fügen Sie ein click-Ereignis, das schaltet die Sichtbarkeit:Den nächsten Schritt in der Komplexität, um die Aktion zu wechseln, aber dann könnte man genauso gut verwenden
jQuery
und get real funky. Oder nutzen Sie diese einfache Methode. Lasst es uns mit einer Taste, aber Sie müssen auch ein div, um Ihre Haken in der R-Befehl PRE-block, und der Traversierung wird es ein wenig kompliziert:( Anmerkung: ich dachte, Sie könnten wrap-R-chunks in
<div>
tags:aber das schlägt fehl - wer weiß, warum?)
InformationsquelleAutor der Antwort Spacedman