R语言reactable中用Rank值为PVI_Value列设置色阶报错求助
问题原因与解决方案
为什么会报错?
你推测的完全正确:PVI_Value列是字符串类型,而你在style函数里直接用value(也就是字符串)执行value - min(HousePVI$Rank)这类数值运算,字符串没法和数字做减法,自然就抛出了“non-numeric argument to binary operator”的错误。
如何用Rank值给PVI Value列设置颜色?
reactable的列style函数支持第二个参数row,它能获取当前行的完整数据。不用纠结PVI_Value的类型,直接调用row$Rank拿到对应行的Rank值,就能复用颜色逻辑了。
修改后的PVI_Value列代码如下:
PVI_Value = colDef(name = "PVI Value", style = function(value, row) { normalized <- (row$Rank - min(HousePVI$Rank))/(max(HousePVI$Rank) - min(HousePVI$Rank)) color <- RtoDColorPalette(normalized) list(background = color, color = 'white') } ),
修改后,PVI_Value列会和Rank列使用完全相同的颜色刻度,基于每行的Rank值生成背景色,彻底避开PVI_Value的类型问题。
内容的提问来源于stack exchange,提问作者Austin Salley
相关产品推荐
相关产品推荐

