我有一个带有样本作为行的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。
答案 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 ”的要求。