2014-06-29 14 views
5

Jak mogę dołączyć wbudowany kod R, który odnosi się do nazwy zmiennej, która zawiera spacje lub inne nietypowe znaki (rzeczywisty przypadek użycia to Pr(>F))? Backticks are the solution w zwykłym skrypcie R, ale wydaje się, że nie działają, gdy kod jest wstawiany w dokumencie docenionym. Oto przykład:Użyj nazwy zmiennej ze spacjami w linii R markdown

```{r} 
df <- data.frame(mydata= 1:10, yourdata = 20:29) 
names(df) <- c("your data", "my data") 

``` 

The first five values of your data are `r df$`your data`[1:5]` 

który podczas dzianiny daje:

Quitting from lines 7-9 (test-main.Rmd) 
Error in base::parse(text = code, srcfile = NULL) : 
    2:0: unexpected end of input 
1: df$ 
^
Calls: <Anonymous> ... <Anonymous> -> withVisible -> eval -> parse_only -> <Anonymous> 
Execution halted 

pamiętać, że jest inna od showing the backticks. Wszystko, co chcę zrobić, to wykonanie kodu, gdy dokument jest dziany. Moim rozwiązaniem jest przypisanie wartości zmiennej o niepoprawnej nazwie do innego obiektu z prostą nazwą w kawałku poprzedzającym kod wbudowany. Ale jestem ciekawy, jak bezpośrednio wywoływać te obiekty z nietypowymi nazwami.

Odpowiedz

11

W tym przypadku można wykorzystać zwykłe cytaty,

The first five values of your data are `r df$"your data"[1:5]` 

czy raczej

The first five values of your data are `r df[["your data"]][1:5]` 
+0

Dzięki! Tak proste, jestem zakłopotany, nie próbowałem tego w moim szaleństwie z innymi metodami! – Ben

+0

przypuszczalnie istnieją inne instancje (ggplot?), W których to się nie powiedzie; Nie sądzę, aby dopasowanie wzoru Knitra mogło obsłużyć zagnieżdżone backticks, jak również przecenę waniliową, niestety. – baptiste

+0

@baptiste Masz rację. knitr nie może obsłużyć zagnieżdżonych pleców. Zatrzyma się zaraz po drugim backtick. –