2017-02-21 181 views
0

我有一个名为“fdr”的data.frame。它看起来像这样:如何通过data.frame中的值为单元格着色?

  pi  pd  aa  ef 
gene1 0.78 0.04 0.89 0.01 
gene2 0.06 0.95 0.02 0.03 
gene3 0.98 0.07 0.03 0.23 

现在我想给红色小于0.05的所有单元格着色。 我该怎么做?

+5

你需要在这方面做更多的扩展。 “在数据框中着色单元格”在R中是一种无意义的概念,除非你正在讨论如何在HTML表格中显示数据框,或者将其导出为支持电子表格的其他特定格式,如界面。在这种情况下,你需要解释你打算如何查看数据,你正在使用什么软件包等。 – joran

+0

我使用grid.table函数和heatmap.2函数。 –

+0

好的,那么除了下面的选项,考虑[this](http://stackoverflow.com/q/18663159/324364)的问题,也许呢?或者[this](http://stackoverflow.com/q/23819209/324364)或[this](http://stackoverflow.com/q/18414001/324364)? – joran

回答

1

对于将来的问题,请打印dput(fdr)的结果。这会让别人更容易回答。

考虑使用formattable package

formattable(df, list(
    pi = formatter("span", style = x ~ ifelse(x < 0.05, style(color = "red", font.weight = "bold"), NA)), 
    pd = formatter("span", style = x ~ ifelse(x < 0.05, style(color = "red", font.weight = "bold"), NA)), 
    aa = formatter("span", style = x ~ ifelse(x < 0.05, style(color = "red", font.weight = "bold"), NA)), 
    ef = formatter("span", style = x ~ ifelse(x < 0.05, style(color = "red", font.weight = "bold"), NA)) 
)) 

结果如下:
enter image description here

这并不能完全实现你想要的(在着色单元而言)。但似乎你试图突出特定的情况下(< 0.05),这绝对捕捉到了这一点。

+0

谢谢!但是在formatC(c(0.42,0.43,0.05,0,0,0.56,0.11,0.03,0.55,: (list)对象不能被改为整数 –

相关问题