从RGB Error-R中提取HSV值

时间:2018-02-08 17:20:35

标签: r

我正在尝试从之前收集的RGB值中提取HSV值,但我遇到了一个我不明白的错误。

使用代码The hash table is full!!! key: 11 value: 101 key: 10 value: 100 key: 10 value: 1000

我收到错误:

> Hmean<-rgb2hsv(Hmean, maxColorValue=255)

任何帮助将不胜感激!我是R的新手,我真的不确定从哪里开始。

修改的 我在下面添加了我的数据:

Error in if (any(0 > rgb) || any(rgb > 1)) stop("rgb values must be in [0, maxColorValue]") : 
  missing value where TRUE/FALSE needed

2 个答案:

答案 0 :(得分:1)

如果每个样本都是一行,并且颜色在列上,这些数据将更容易使用:

Hmean.transpose <- as.data.frame(t(Hmean))
head(Hmean.transpose)

                   Red   Green    Blue
BIOUG06754-A02  60.517  68.521 107.304
BIOUG06754-A04 150.321 142.084 136.413
BIOUG06754-A05 147.890 133.011  92.305
BIOUG06754-A06 122.536 131.516 153.172
BIOUG06754-A07 123.994 122.671 129.040
BIOUG06754-A11 103.295  96.326  97.662
...

现在可以更轻松地查看哪些行包含NA值:

subset(Hmean.transpose, is.na(Red))

               Red Green Blue
BIOUG09330-B05  NA    NA   NA
BIOUG09330-C02  NA    NA   NA

如果我们过滤掉这些,颜色转换将按预期工作:

Hmean.filter <- subset(Hmean.transpose, !is.na(Red))
data.hsv <- with(Hmean.filter, rgb2hsv(Red, Green, Blue))

答案 1 :(得分:0)

如果您只想删除NA值,则可以排除具有NA值的列。例如

sapply(Filter(function(x) any(!is.na(x)), Hmean), rgb2hsv, maxColorValue=255)

或者使用tidyverse purrr函数,

library(purrr)
Hmean %>% discard(~any(is.na(.))) %>% map_dfr(rgb2hsv, maxColorValue=255)