簡単な質問ですが、文字列がある場合、その文字列が有効な色表現であるかどうかをテストするにはどうすればよいR
ですか?
私が試した2つのことは、最初に関数を使用し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
動作しますが、あまりきれいに見えず、ベクトル化されていません。2 つ目は、文字列がcolors()
ベクトルにあるか、#
長さが 4 から 6 の 16 進数が後に続くかを確認することです。
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
それがどれほど安定しているかはわかりませんが、これは機能します。しかし、このチェックを行うための組み込み関数が必要だと思われますか?