2014-06-29 12 views
5

Come posso includere il codice in linea R che fa riferimento a un nome di variabile che contiene spazi o altri caratteri insoliti (il caso di utilizzo effettivo è Pr(>F))? Backticks are the solution nello script semplice R, ma non sembrano funzionare quando il codice è in linea in un documento markdown. Ecco un esempio:Utilizzare un nome di variabile con spazi in linea in 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]` 

Quali quando maglia dà:

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 

Si noti che questo è diverso da showing the backticks. Tutto quello che voglio fare è avere il codice eseguito quando il documento è lavorato a maglia. La soluzione alternativa consiste nell'assegnare il valore della variabile con nome dispari a un altro oggetto con un nome semplice nel blocco che precede il codice inline. Ma sono curioso di sapere come chiamare direttamente in linea questi oggetti con nomi insoliti.

risposta

11

In questo caso è possibile usare le virgolette normali,

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

o meglio

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

Grazie! Per quanto facile, sono imbarazzato che non l'ho provato nella mia frenesia di altri metodi! – Ben

+0

presumibilmente ci sono altre istanze (ggplot?) Dove ciò fallirebbe; Non credo che la corrispondenza dei pattern di knitr possa gestire i backtick nidificati e il markdown della vaniglia, sfortunatamente. – baptiste

+0

@baptiste Hai ragione. knitr non può gestire i backtick annidati. Si fermerà subito dopo il secondo apice. –

Problemi correlati