我想应用一个标准,根据该标准,平移表中的单元格是否为粗体。但是,我想将此标准应用于表的单个列而不是其他列。
这是完整的降价文件。
---
title: "Untitled"
output: pdf_document
---
```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = TRUE)
```
```{r toy data}
pVal <- as.character(c(0.9, 0.04, 0.6, 0.0003))
FVal <- as.character(c(0.03, 2.51, 1.7, 32.1))
Group <- c("A", "B", "C", "D")
df <- data.frame(Group, FVal, pVal, stringsAsFactors = FALSE)
library(pander)
emphasize.strong.cells(which(df < 0.05, arr.ind = TRUE))
pander(df)
```
这里有两个问题。
首先,符合FVal
列标准的值也是粗体。我希望仅在pVal
列 中将值&lt; .05变为粗体。我尝试在emphasize.strong.cells
函数中进行子集化,如此
emphasize.strong.cells(which(df$pVal < 0.05, arr.ind = TRUE))
或
emphasize.strong.cells(which(df[,"pVal"] < 0.05, arr.ind = TRUE))
但都没有奏效。我怀疑这种情况正在发生,因为以这种方式进行子集化我没有给emphasize.strong.cells
函数一个具有多个维度的对象,但我不知道如何创建一个像这样的对象,其中只有一列是活跃的&#39;为标准。
第二个问题是pVal
列中的最后一个元素在最终的rmarkdown pdf中没有变成粗体,我假设是因为转换为科学记数法。
非常感谢任何解决方案。
答案 0 :(得分:1)
这个简单的黑客会为你处理它。
df$pVal <- ifelse(df$pVal < 0.05, paste0("**", df$pVal, "**"), df$pVal)
pander(df)
-----------------------
Group FVal pVal
------- ------ --------
A 0.03 0.9
B 2.51 **0.04**
C 1.7 0.6
D 32.1 3e-04
-----------------------
如果您将pVal
更改为as.numeric
,最终值也会变为粗体。
答案 1 :(得分:1)
我认为这是一个matrix
操纵问题而不是pander
专用问题,因为emphasize.cells
需要matrix
返回which(..., arr.ind = TRUE)
如果我对这个问题的理解是正确的,则过滤第3列。见例如:
> emphasize.strong.cells(as.matrix(subset(data.frame(which(df < 0.05, arr.ind = TRUE)), col == 3)))
> pander(df)
-----------------------
Group FVal pVal
------- ------ --------
A 0.03 0.9
B 2.51 **0.04**
C 1.7 0.6
D 32.1 3e-04
-----------------------