gpt4 book ai didi

r - 检查字符串是否是有效的颜色表示

转载 作者:行者123 更新时间:2023-12-03 08:30:31 26 4
gpt4 key购买 nike

简短的问题,如果我有一个字符串,我如何测试该字符串是否是 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

虽然我不确定它有多稳定,但哪个有效。但似乎应该有一个内置函数来进行这个检查?

最佳答案

您的第一个想法(使用 col2rgb() 为您测试颜色名称的有效性)对我来说似乎很好,只需要矢量化即可。至于它是否看起来漂亮......很多/大多数R函数在“引擎盖下”并不是特别漂亮,这是首先创建函数的主要原因!对用户隐藏所有那些丑陋的内部结构。

一旦你定义了 areColors()下面,使用它很容易:

areColors <- function(x) {
sapply(x, function(X) {
tryCatch(is.matrix(col2rgb(X)),
error = function(e) FALSE)
})
}

areColors(c(NA, "black", "blackk", "1", "#00", "#000000"))
# <NA> black blackk 1 #00 #000000
# TRUE TRUE FALSE TRUE FALSE TRUE

关于r - 检查字符串是否是有效的颜色表示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13289009/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com