Rmarkdownを使用してレポートを作成していますが、次のようなデータフレームがあります。
すべてのセルをチェックしてマークアップを変更し、「0.05」より小さい値が赤で強調表示されるようにします。2行と特定のセルしかない単純なデータフレームでそれを行うことができたので、簡単で機能していました。しかし、この場合、すべてのセルをチェックする必要があり、その方法がわかりません。mutate_if、mutate_allを試してみましたが、どこにも行きません。
この行は、他のデータフレームで機能させるために必要なすべてでした。
mutate(p.value = cell_spec(p.value, "html", color = ifelse(p.value[1] < 0.05, "red", "black")))
編集:要求に応じて。
KableとKableExtraを使用して、レポートの印刷の一部を実行しています。これは、より基本的なデータフレームで強調表示を行うために使用したコード例です。
aov.formiga <- aov(as.formula(sprintf("%s ~ Local", v)), formigas)
d <- tidy(aov.formiga)
print(
d %>%
replace(is.na(.),"") %>%
mutate(p.value = cell_spec(p.value, "html", color = ifelse(p.value[1] < 0.05, "red", "black"))) %>%
kable(format = "html", escape = F, col.names = c("Source", "DF","Anova SS", "Mean Square", "F Value", "Pr > F")) %>%
kable_styling(bootstrap_options = c("striped", "hover"), full_width = F)
)
これがこの印刷の結果です。
私はどんなデータでも提供できますが、アイデアを単純化することを試みることができます:
DF
... A B C
1 1 2 1
2 2 1 2
3 3 4 1
このDFをループして、すべて1を「One」に置き換え、他の値はそのままにしておきたいとします。Dplyrでそれができれば、他の部分でも作業できると思います。ありがとうございました!
サンプルデータで、2以上のすべてのセルを赤に変えたい場合:
x = c(A = 1, B = 2, C = 1)
y = c(A = 2, B = 1, C = 2)
z = c(A = 3, B = 4, C = 1)
data=data.frame(rbind(x,y,z))
library(knitr)
library(kableExtra)
library(tidyverse)
data %>%
mutate_all(~cell_spec(.x, color = ifelse(.x >= 2, "red"," black"))) %>%
kable(escape = F) %>%
kable_styling()
コメントへの回答
ifelse()
休憩NA
の値は、私たちは使用することができますcase_when()
:
data %>%
mutate_all(~cell_spec(.x, color = case_when(.x >= 2 ~ "red",
TRUE ~ "black"))) %>%
kable(escape = F) %>%
kable_styling()
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加