Я создаю пользовательский фрагмент кода, который переписывает выражения, которые пользователь передает в блок кода, в допустимый код R, а затем выполняет анализ. Помимо перезаписи выражения R, которое вводит пользователь, цель состоит в том, чтобы блок кода работал как обычный блок кода
. Затем я выполняю результат и сохраняю его в переменной, которую я пытаюсь вывод. Я сталкиваюсь с двумя проблемами здесь:
- Он печатает невидимые переменные
knit_print
и engine_output
, кажется, не работают друг с другом, т.е. я хочу, чтобы вывод, такой как кадры данных быть напечатанным в формате таблицы, но я не могу заставить его работать.
Примером того, что я пытаюсь сделать, было бы что-то вроде:
```{r}
custom_engine <- function(options) {
c = options$code
pasted <- paste(c, collapse = "\n")
code <- parse(text = pasted)
result = lapply(code, eval, envir = .GlobalEnv)
knit_print(result)
engine_output( options, code = c, out = NULL )
}
knitr::knit_engines$set(mmm = custom_engine)
```
```{r}
speed_data <- data.frame(
speed = rlnorm(100, log(200), 1),
device = sample(c("smartphone", "laptop", "tablet"), 100, TRUE, prob= c(0.1, 0.65, 0.25))
)
median = median(speed_data$speed)
iqr = IQR(speed_data$speed, na.rm=TRUE)
```
```{mmm}
result_analysis <- speed_data %>%
filter(speed < median + 3 * iqr & speed > 10) %>%
filter(device != "smartphone")
result_analysis
```
Я хотел бы, чтобы приведенный выше код печатал таблицу один раз и в формате knit_print () по умолчанию, как это делает RMarkdown.
Любые предложения приветствуются.