简短的问题,如果我有一个字符串,我如何测试该字符串是否是有效的颜色表示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
有效,但看起来不是很漂亮,也没有矢量化。第二件事是检查字符串是否在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
虽然我不确定它有多稳定,但它有效。但似乎应该有一个内置函数来进行这个检查?