Короткий вопрос, если у меня есть строка, как я могу проверить, является ли эта строка допустимым цветовым представлением в R
?
Две вещи, которые я пробовал, сначала используют функцию col2rgb()
чтобы проверить, является ли это цветом:
isColor <- function(x)
{
res <- try(col2rgb(x),silent=TRUE)
return(!"try-error"%in%class(res))
}
> isColor("white")
[1] TRUE
> isColor("#000000")
[1] TRUE
> isColor("foo")
[1] FALSE
Работает, но не кажется очень красивым и не векторизован. Во-вторых, нужно просто проверить, есть ли строка в vector colors()
или #
а затем шестнадцатеричное число от 4 до 6:
isColor2 <- function(x)
{
return(x%in%colors() | grepl("^#(\\d|[a-f]){6,8}$",x,ignore.case=TRUE))
}
> isColor2("white")
[1] TRUE
> isColor2("#000000")
[1] TRUE
> isColor2("foo")
[1] FALSE
Что работает, хотя я не уверен, насколько он стабилен. Но кажется, что для выполнения этой проверки должна быть встроенная функция?