能否在Formatr表上下文中创建格式化程序,以便有条件地应用它?

能否在Formatr表上下文中创建格式化程序,以便有条件地应用它?,r,conditional-formatting,formatter,formattable,R,Conditional Formatting,Formatter,Formattable,我有一个数据帧,它将使用FormatR formattable库进行格式化。我创建了一个格式化程序来应用适当的格式。但是,数据帧包含一些NAs,当遇到这些NAs时,格式化会失败。我真正想做的是对格式化程序进行编码,以便它有条件地确定何时应用格式以及何时不应用格式。下面的代码说明了这个问题 library(formattable) theData1 <- data.frame("A"=c(12.1456, 143.012), "B"=c(145.23

我有一个数据帧,它将使用FormatR formattable库进行格式化。我创建了一个格式化程序来应用适当的格式。但是,数据帧包含一些NAs,当遇到这些NAs时,格式化会失败。我真正想做的是对格式化程序进行编码,以便它有条件地确定何时应用格式以及何时不应用格式。下面的代码说明了这个问题

library(formattable)

theData1 <- data.frame("A"=c(12.1456, 143.012), "B"=c(145.23435, 331.22335))
theData2 <- data.frame("A"=c(12.1456, 143.012), "B"=c(145.23435, 331.22335), "C"=c(143.012, NA))

MyFormatter <- formattable::formatter(
   "span", style = ~ style(font.weight="bold"), x ~ style(round(x,2)))

tbl1 <- formattable::formattable(theData1, list('A'=MyFormatter, 'B'=MyFormatter))
tbl2 <- formattable::formattable(theData1, list('A'=MyFormatter, 'B'=MyFormatter, 'C'=MyFormatter))
库(格式化表)

数据1
ifelse
可用于处理
NA
s

MyFormatter <- formattable::formatter(
   "span", 
   style = ~ style(font.weight = "bold"),
   x ~ style(ifelse(!is.na(x), round(x, 2), ""))
)

formattable::formattable(theData2, list('A'=MyFormatter, 'B'=MyFormatter, 'C'=MyFormatter))

MyFormatter谢谢。我本以为我尝试了“ifelse”,因为这是一个我经常使用的函数,但我可能把它放在了错误的代码位置。无论如何,谢谢。。。这很有效。