2016-03-17 37 views
2

我有以下dataframeR - ReporteRs包。是否可以将条件格式应用于文本?

> View(AuthorsMM) 

    Autor # Sentiment 
1 Autor 1 33 J 
2 Autor 2 33 J 
3 Autor 3 22 K 
4 Autor 4 18 L 
5 Autor 5 16 L 
6 Autor 6 15 K 
7 Autor 7 15 L 
8 Autor 8 15 K 
9 Autor 9 15 K 
10 Autor 10 14 K 

我现在用的是包ReporteRs发送此data.frame为flextable到PowerPoint:

我与followig文本属性定义感悟柱:

AuthorsMM_ft[, 3] = textProperties(color = 'white', font.weight = 'bold', font.family = 'Wingdings', font.size = 12) 

它使Powerpoint显示不同的表情(因为o f Wingdings trueType)根据列的内容。

但是,我想根据内容不同地将不同的颜色(绿色,黄色,红色)应用于文本。因此:

  • 如果(观点== “J”),那么textProperties(颜色= '绿色', font.weight = '粗体',font.family = '宋体',font.size = 12)

  • 如果(观点== “K”),那么textProperties(颜色= '黄色', font.weight = '粗体',font.family = '宋体',font.size = 12)

  • if(Sentiment ==“L”)then textProperties(颜色= '红色', font.weight = '粗体',font.family = '宋体',font.size = 12)

就这么可利用该包?

+0

您可以使用'dput(AuthorsMM)'使示例更容易重现 – epo3

回答

3

是的,这是可能的。

这段代码演示了如何做到这一点:

library(ReporteRs) 

# define the data frame - extracted with dput() 
AuthorsMM <- structure(list(Autor = c("Autor 1", "Autor 2", "Autor 3", "Autor 4", 
             "Autor 5", "Autor 6", "Autor 7", "Autor 8", "Autor 9", "Autor 10" 
), `#` = c(33L, 33L, 22L, 18L, 16L, 15L, 15L, 15L, 15L, 14L), 
Sentiment = c("J", "J", "K", "L", "L", "K", "L", "K", "K", 
       "K")), class = c("tbl_df", "tbl", "data.frame"), row.names = c(NA, 
                      -10L), .Names = c("Autor", "#", "Sentiment"), spec = structure(list(
                       cols = structure(list(Autor = structure(list(), class = c("collector_character", 
                                     "collector")), `#` = structure(list(), class = c("collector_integer", 
                                                  "collector")), Sentiment = structure(list(), class = c("collector_character", 
                                                               "collector"))), .Names = c("Autor", "#", "Sentiment")), default = structure(list(), class = c("collector_guess", 
                                                                                       "collector"))), .Names = c("cols", "default"), class = "col_spec")) 

# conditional formatting: 
base_text_prop = textProperties(font.size = 12, 
          color = "black", 
          font.weight = 'bold', 
          font.family = 'Wingdings') 

myCellProps = cellProperties(padding = 5) 

AuthorsMM_ft <- FlexTable(data = head(AuthorsMM,10), 
         header.columns = TRUE, 
         body.text.props = base_text_prop) 

AuthorsMM_ft[AuthorsMM$Sentiment == 'J',3] = chprop(base_text_prop, color = 'green') 
AuthorsMM_ft[AuthorsMM$Sentiment == 'K',3] = chprop(base_text_prop, color = 'yellow') 
AuthorsMM_ft[AuthorsMM$Sentiment == 'L',3] = chprop(base_text_prop, color = 'red') 
AuthorsMM_ft 

enter image description here

出于某种原因,确定内FlexTabletextProperties没有工作。当我使用background.color时,它似乎改变了格式。

更多FlexTables中的changing propertiesconditional formatting的示例。

+0

chprop完成了任务!谢谢! – agustin

相关问题