将每行中的最大值加粗

问题描述 投票:0回答:2

我正在尝试使用此代码将每一行中的最大值加粗

mtcars %>% 
  flextable() %>%
  bold(max(.[1:32,]))

并收到此错误:

.[1:32, ] 中的错误:维数不正确

我也尝试过,灵感来自于 flextable 中的条件大胆值

mtcars %>% 
  flextable() %>%
  bold(~ max(.), 1) 

eval(as.call(f[[2]]), envir = data) 中的错误:对象 '.'没有找到

删除

.
中的
max(.)
没有任何区别。

r flextable
2个回答
3
投票

要获得每一行的最大值,您可以尝试覆盖弹性对象的属性:

编辑:

正如评论中提到的,不建议手动更改对象结构:

library(magrittr)
mtcars %>% 
  flextable::flextable()  -> bold_flex2

for(i in seq_len(nrow(mtcars)))
{
  bold_flex2 %<>% flextable::bold(i, which.max(mtcars[i,]))
}
bold_flex2

旧答案:

library(magrittr)

mtcars %>% 
  flextable::flextable() -> bold_flex

for(i in seq_len(nrow(mtcars)))
{
  bold_flex$body$styles$text$bold$data[i, which.max(mtcars[i,])] <- TRUE
}


0
投票

要加粗最大值,我相信你必须单独做每一列。

我在这里使用了两列,并且仅将变量加粗的列制作为粗体。

library(tidyverse)
library(flextable)

data(mtcars)

mtcars %>% 
  flextable() %>%
  bold(~mpg == max(mpg), 1) %>% 
  bold(~drat == max(drat), 5)

© www.soinside.com 2019 - 2024. All rights reserved.