вставить + курсив с двумя векторами - PullRequest
0 голосов
/ 15 февраля 2019

У меня есть два вектора - вектор varnames содержит имена переменных, а вектор descs содержит их описания.Я хочу paste0 их вместе, но описания должны быть выделены курсивом.

У меня есть это прямо сейчас:

labels <- paste0(varnames, "\n", descs)

, но я хочу что-то вроде

labels <- paste0(varnames, "\n", italic(descs))

Я знаком с expression и substitute, но я не знаюне знаю, как использовать их для этого.

РЕДАКТИРОВАТЬ: Я знаком с тем, как сделать это для двух строк.Мой вопрос о двух векторах.

1 Ответ

0 голосов
/ 16 февраля 2019

Давайте предположим, что некоторые значения для varmanes и descs:

varnames = c("a", "b", "c")
descs = c("desc a", "desc b", "desc c")

Затем вы можете получить выражение ваших строк с помощью функции parse:

gsub(" ", "~", descs) %>% 
  paste('"',varnames, '\n "*italic(',.,')', sep = "") %>%
   parse(text = .) -> eNames

eNames
#expression("a
# "*italic(desc~a), "b
# "*italic(desc~b), "c
# "*italic(desc~c))

Замечание IКанал dplyr (т.е. %>%) используется только для ясности кода.Вот пример с использованием приведенных выше результатов и ggplot:

df <- data.frame(dose=c("D0.5", "D1", "D2"),
                 len=c(4.2, 10, 29.5))

ggplot(data=df, aes(x=dose, y=len)) +
  geom_bar(stat="identity") + 
  scale_x_discrete(labels = eNames) +
  theme(text = element_text(size = 20)) +
  coord_flip() +
  labs(x = '')

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...