例如,该函数应该这样工作。
# colors with no transparency
hex_values("#435690")
## red green blue
## "43" "56" "90"
如果所提供的十六进制颜色有一个alpha通道 那么函数就应该这样工作。
# colors with transparency
hex_values("#435690FF")
## red green blue alpha
## "43" "56" "90" "FF"
我正在用regex和for循环来写我的函数 但还是遇到了很多问题。
感谢任何建议和帮助
你可以使用 col2rgb()
并将结果进行转置。
t(col2rgb("#435690FF", alpha = TRUE))
red green blue alpha
[1,] 67 86 144 255
或者像r2evans指出的那样,为了恢复到十六进制值,将其包裹在 as.hexmode()
.
t(as.hexmode(col2rgb("#435690FF", alpha = TRUE)))
red green blue alpha
[1,] "43" "56" "90" "ff"
将评论纳入并将其全部打包成一个函数。
hex_values <- function(x) {
clr <- ifelse(startsWith(x, "#"), x, paste0("#", x))
t(toupper(as.hexmode(col2rgb(clr, alpha = TRUE))))
}
hex_values(colorRampPalette(c("red", "blue"))(5))
red green blue alpha
[1,] "FF" "00" "00" "FF"
[2,] "BF" "00" "3F" "FF"
[3,] "7F" "00" "7F" "FF"
[4,] "3F" "00" "BF" "FF"
[5,] "00" "00" "FF" "FF"