2016-05-20 13 views
3

Ich bin auf der Suche nach Inline-R-Code in einen Aufsatz, den ich schreibe. Das folgende ist in Ordnung:Inline-Dplyr in R Markdown

The quick brown fox jumped over \`r 2+2\` lazy dogs 

Der schnelle braune Fuchs sprang über 4 faule Hunde

Aber wenn ich versuche, mit dem folgenden Datenrahmen zu kombinieren dplyr:

structure(list(name = structure(c(2L, 1L, 3L), .Label = c("Cat", 
"Dog", "Horse"), class = "factor"), n = c(4L, 3L, 8L)), .Names = c("name", 
"n"), class = "data.frame", row.names = c(NA, -3L)) 

es bricht :

The quick brown fox jumped over \`r as.numeric(temp %>% filter(name=="dog") %>% select(n)\` lazy dogs 

Quitting from lines 80-81 (QuickBrown.Rmd) 
Error in base::parse(text = code, keep.source = FALSE) : 
<text>:2:0: unexpected end of input 
1: as.numeric(temp %>% filter(name=="Dog") %>% select(
^

Der Versuch, die Brocken Objekte zu verwenden, bringt mich näher, vor allem mit den Ergebnissen = "asis":

The quick brown fox jumped over 
```{r results="asis", echo=FALSE} 
df <- as.numeric(temp %>% filter(name=="Dog") %>% select(n)) 
print(df[,1][[1]]) 
``` 
lazy dogs 

Der schnelle braune Fuchs über sprang [1] 4 faule Hunde

aber ich kann‘ t erarbeiten, wie man die Indexnummer los wird [1]. Wie kann ich dplyr-Ergebnisse am besten mit R Markdown kombinieren oder den Chunk verwenden, wie kann ich die Indexnummer loswerden?

+1

Sie könnten die 'cat' Funktion anstelle von' print' verwenden. Eine andere Option wäre, die Chunk-Option zu verwenden, um eine Variable 'n' zu erstellen und dann' n' inline aufzurufen wie 'Der schnelle braune Fuchs sprang über 'r n' faule Hunde '. – brittenb

+0

ah, 'Katze' funktioniert, danke. Ich nehme es inline dplyer ist aber nicht möglich: Der schnelle braune Fuchs sprang über die Katze (as.numeric (temp%>% filter (name == "dog")%>% select (n)) faule Hunde immer noch – pluke

Antwort

4

würde ich

versuchen
```{r, echo=FALSE} 
library(magrittr) # for %$% extraction 
x <- temp %>% filter(name=="Dog") %>% slice(1) %$% n) 
``` 

Der schnelle braune Fuchs über `r sprang x` faule Hunde


Sie können aber auch dplyr inline verwenden. Ich habe das erfolgreich getestet:

--- 
title: "test" 
output: html_document 
--- 

```{r setup, include=FALSE} 
knitr::opts_chunk$set(echo = TRUE) 
library(dplyr) 
library(magrittr) 
``` 

## R Markdown 

here's a `r mtcars %>% slice(1) %$% gear` test with dplyr. 
+1

Danke, das funktioniert Ich habe noch nie die% $% getroffen, was macht das? Mein neuer Code: Der schnelle braune Fuchs sprang über \ 'r temp%>% filter (name == "Dog") % $% n \ 'faule Hunde – pluke

+2

@pluke,'% $% 'wird verwendet, um einen atomaren Vektor aus einem data.frame in einer Pipe zu extrahieren (und das (ein Vektor) ist, was Sie in Ihrem Inline-Code verwenden möchten) –

+1

perfekt, nochmals vielen Dank – pluke