обратных кавычками Проблема
Моего внутреннего код кусок ломается, когда я filter()
или select()
имя столбца, который имеет белое пространство, которое я обычно определить с обратными кавычками в dplyr.Rmarkdown: написание встроенного кода dplyr, если имена столбцов имеют пространство, определенное с
Пример данных
```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = TRUE)
library(dplyr)
library(knitr)
library(lazyeval)
df <- structure(list(1:3, 2:4), .Names = c("a", "b"), row.names = c(NA, -3L), class = "data.frame")
df <- df %>% select(`a a`=a, `b b`=b)
```
Инлайн код кусок
Я пытаюсь что-то вроде `r df %>% filter(`a a` == 1) %>% select(`a a`) %>% as.numeric()`
, но я получаю следующее сообщение об ошибке:
Error in base::parse(text = code, keep.source = FALSE) : <text>:2.0: unexpected end of input 1: df %>% filter(^ Calls: <Anonymous> ... inline_exec -> withVisible -> eval -> parse_only -> <Anonymous>
... по довольно очевидным причинам (обратные концы завершают кусок встроенного кода). Я мог бы переименовать столбцы в блоке кода после вычислений intext (я форматирую их для таблицы), но было бы неприятно разбить его.
Дорогостоящие lazyeval
решение
Это решает проблему r df %>% filter_(interp(~ which_column == 1, which_column = as.name("a a"))) %>% select_(as.name("a a")) %>% as.numeric()
, но там должно быть лучшим способом.
Можете ли вы использовать оператор-побег для обратных тиков? –
Можете ли вы использовать одиночные или двойные тики? 'df%>% select ('a a' = a, 'b b' = b)' работает одинаково для меня (по крайней мере, на консоли). Единственный раз, когда я нахожу, что я * нуждаюсь * для использования обратных ссылок, ссылается (не использует) «СПЕЦИАЛЬНЫЕ» функции, такие как '' '% in%' ''. – r2evans
Или, конечно, вы могли бы просто не делать причудливых вычислений inline. Определите фильтр 'res = df%>% (\' aa \ '== 1)%>% select (\' aa \ ')%>% as.numeric()' в вашем блоке/блоке, а затем '\' r res \ '' it inline. – Frank