Thanks to those who took time to respond. Based on the functions that were pointed out to me I have the following: # colors.hex and colors.name convert color names to hex and visa versa # note that each color has a unique hex code but each hex code may have # more than one color colors.hex <- function( x=colors() ) { color.hex <- function(x) do.call( "rgb", as.list(col2rgb(x)/255) ) sapply( x, color.hex ) } colors.name <- function( x ) { color.name <- function( x ) colors()[ colors.hex() == x ] lapply( x, color.name ) } # For example, colors.hex( "red" ) colors.hex( colors()[1:5] ) colors.name( "#FF0000" ) colors.name( rainbow(3) ) colors.name( rainbow(7) ) # note: only first element has a name # LL partitions all color names into equivalence classes w same hex code # LL2 is similar but only has equivalence classes with more than one name LL <- by( colors(), colors.hex(), as.vector ) LL2 <- LL[ lapply( LL, length ) > 1 ]