2016-07-18 7 views
1

パンダテーブルのどのセルを太字にするかに応じて基準を適用したいと思います。しかし、私はこの基準を他の列ではなくテーブルの単一の列に適用したいと考えています。パンダ内のテーブルの単一の列に基準を適用する

ここに完全なマークダウン文書があります。

--- 
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) 
``` 

ここには2つの問題があります。

最初に、FVal列の基準を満たす値も太字で表示されます。 pValの列に< .05の値をに太字にしたいとします。私はそう

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機能でサブセット化を試みたが、どちらも働きました。私はこれが起こっていると思うこの方法をサブセット化すると、私はemphasize.strong.cells関数にいくつかの次元のオブジェクトを与えているわけではありませんが、そのようなオブジェクトを作成する方法はわかりません。

第2の問題は、pVal列の最終要素が最終的なrmarkdown pdfで太字になっていないことです。私は科学的表記法への変換のためだと考えます。

どのような解決策も大変ありがたいです。

答えて

1

私はemphasize.cellsは私のこの質問に対して理解が正しければ第三列にフィルタ処理されることをwhich(..., arr.ind = TRUE)によって返さmatrixをとるよう、これは、かなりmatrix操作問題ではなく、panderに固有のだと思います。例:

> 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 
----------------------- 
+0

はい、私はいつも最後の列をどのように分離するのかがわからないことが分かっていました。 'サブセット(。、col == 3)は私が必要としていたものでした。いつものように@daroczigはとても役に立ちました。 – llewmills

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 
----------------------- 

あなたはas.numericpValを変更した場合、最終的な値も大胆行われます。

+0

@Maiasauraありがとうございます。非常に良い回避策。私は誰かが私に '社内のパンダ機能で同じことをする方法を与えることができるかどうかを見て周りに待つが、それは私のrmarkdownの問題の周りにupvoteので間違いなく価値がある。 – llewmills

関連する問題