我正在尝试从之前收集的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
答案 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)