有没有计算R中n种十六进制颜色平均值的函数?

时间:2019-09-23 02:55:21

标签: r colors hex rgb

我有一个带有样本作为行的df。每个变量都有三个十六进制格式的不同颜色的变量。 有没有一种功能可以对这些颜色求平均而不将其转换为rgb?

   id       x       y       z
1   0 #EE30A7 #EE30A7 #3D3D3D
2   1 #ED31A5 #EC30A5 #3D3E3C
3   2 #EC33A4 #EA30A4 #3E3F3C
4   3 #EB34A3 #E830A3 #3F413C
5   4 #EA36A2 #E630A2 #40423C
6   5 #E937A1 #E530A1 #41443C
7   6 #E8399F #E330A0 #42453C
8   7 #E83A9E #E1309F #43473C
9   8 #E73C9D #DF319E #44483C
10  9 #E63E9C #DE319D #45493C

我要向该df添加另一个平均颜色的col。

1 个答案:

答案 0 :(得分:1)

我会尝试这样做,可能很丑:

rgb(t(Reduce(`+`, lapply(dat[c("x","y","z")], col2rgb))/3), maxColorValue=255)
# [1] "#B33483" "#B23582" "#B13681" "#B03780" "#B03880" "#AF397F" "#AF3A7E" "#AE3B7D" "#AE3C7D"
#[10] "#AD3D7C"

基本上,我正在使用col2rgb创建一组r / g / b矩阵,然后将它们求平均,然后转换回十六进制字符串。我不确定这是否满足您的“ 将这些颜色求平均而不将其转换为rgb ”的要求。