Я использую R версии 3.5.2 .
Я бы хотел оценить строку в kable
функции , но у меня возникли некоторые проблемы.Обычно я могу передать строку через цикл for с помощью функции get
, но в функции kableExtra::add_header_above
я получаю следующую ошибку:
Error: unexpected '=' in:"print(kable(df4,"html", col.names = c("zero","one")) %>% add_header_above(c(get("string") ="
Я испробовал несколько методов, таких как создание строкивне функции kable и ее вызова, используя разрывы страниц и операторы печати в цикле вязания, а также пробуя функцию eval
.Я также добавил результат = "asis", как предложено здесь
Вот воспроизводимый пример:
```{r results="asis"}
library("knitr")
library("kableExtra")
df1 <- mtcars %>% dplyr::select(am,vs)
df1a <- df1 %>% mutate(type = "A")
df1b <- df1 %>% mutate(type = "B")
df1c <- df1 %>% mutate(type = "C")
df2 <- rbind(df1a,df1b,df1c)
vector <- as.vector(unique(df2$type))
for (variable in vector) {
df3 <- df2 %>% filter(type == (variable))
df4 <- table(df3$am,df3$vs)
print(kable(df4,"html", col.names = c("zero","one")) %>%
add_header_above(c(get("string") = 3)))
}
```
В идеале, я хотел бы, чтобы заголовок таблицы былиметь имя строки из столбца type
.Ниже приведен пример того, как я хочу, чтобы это выглядело:
print(kable(df4,"html", col.names = c("zero","one")) %>%
add_header_above(c("A" = 3)))
Я понимаю, что функция knitr
должна обрабатываться иначе, чем обычная R при использовании циклов, как указано в this решение, но я все еще пытаюсь получить строку для правильной оценки.Возможно, потому что функция требует ввода vecotr, она не оценивает его как строку?