2016-05-20 8 views
3

私は自分が書いているエッセイにいくつかのRコードをインライン展開しようとしています。次は大丈夫です:inline dplyr in R Markdown

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

速い茶色のキツネは4オーバー怠惰な犬

を跳んだ。しかし、私は、次のデータフレームと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)) 

それが壊れます:

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(
^

チャンクオブジェクトを使用しようとすると、特に= "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 

[1] 4匹の怠惰な犬

が、私はすることができます」どのようにインデックス番号[1]を取り除くために働くか。 dplyrの結果をR Markdownとインラインで組み合わせたり、チャンクを使用したりするにはどうしたらいいですか?インデックス番号を取り除くにはどうしたらいいですか?

+1

があなたの代わりにprint' 'の' cat'機能を使用することができるかもしれません。別のオプションは、チャンクオプションを使用して変数nを作成し、 'n 'をインラインで呼び出すことです。「早い茶色のキツネは怠け者の犬を飛び越えました。 – brittenb

+0

ああ、 'cat'作品、ありがとう。私はそれを取ることができませんが、それはできません:早い茶色のキツネは\ 'r cat(as.numeric(temp%>%filter(name ==" dog ")%>%select(n))\'まだ壊れていません – pluke

答えて

4

速い茶色のキツネは、R X '怠惰な犬


`飛び越え

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

私がしようとするだろう。しかし、あなたはまた、dplyrインラインを使用することができます。私は正常にこれをテストした:

--- 
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

これはうまくいきました。以前は%$%に会ったことはありませんでしたが、私の新しいコードは次のとおりです。 %$%n \ '遅延犬 – pluke

+2

@pluke、'%$% 'は、パイプ内のdata.frameからアトミックベクトルを抽出するために使用されます(そして、その(ベクトル)はインラインコードで使用するものです) –

+1

完璧、ありがとう – pluke