r - Why colorRampPalette produces NAs? -


i have following list

  t <- c(22, 22, 8, 8, 8, 8, 8, 8, 8, 8, 8, 4, 4, 4, 4, 4, 4, 4, 18,      18, 18, 12, 12, 12, 1, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,      7, 7, 7, 7, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 6,      6, 6, 6, 6, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,      21, 20, 20, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 11, 11, 11, 11, 11,      11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 2, 2, 2, 3, 3, 3, 3,      5, 5, 5, 5, 5, 10, 10, 10, 17, 17, 17, 14, 14, 15, 15, 15) 

which want assign color each uniform color code

library(rcolorbrewer) rowcol <- colorramppalette(brewer.pal(8,"dark2")) rowcol(length(unique(t)))[t] 

but why produces nas?

 [1] na        na        "#a66f20" "#a66f20" "#a66f20" "#a66f20" "#a66f20" "#a66f20" "#a66f20" "#a66f20" "#a66f20"  [12] "#578a52" "#578a52" "#578a52" "#578a52" "#578a52" "#578a52" "#578a52" "#8a6c8d" "#8a6c8d" "#8a6c8d" "#c9611d"  [23] "#c9611d" "#c9611d" "#1b9e77" "#93762d" "#93762d" "#93762d" "#93762d" "#93762d" "#93762d" "#93762d" "#93762d"  [34] "#93762d" "#93762d" "#93762d" "#93762d" "#93762d" "#93762d" "#93762d" "#93762d" "#93762d" "#7f6ea0" "#7f6ea0"  [45] "#7f6ea0" "#7f6ea0" "#7f6ea0" "#7f6ea0" "#7f6ea0" "#7f6ea0" "#7f6ea0" "#7f6ea0" "#7f6ea0" "#7f6ea0" "#7f7c39"  [56] "#7f7c39" "#7f7c39" "#7f7c39" "#7f7c39" na        na        na        na        na        na        na         [67] na        na        na        na        na        na        na        "#7570b3" "#7570b3" "#bb6814" "#bb6814"  [78] "#bb6814" "#bb6814" "#bb6814" "#bb6814" "#bb6814" "#bb6814" "#bb6814" "#bb6814" "#d35f0b" "#d35f0b" "#d35f0b"  [89] "#d35f0b" "#d35f0b" "#d35f0b" "#d35f0b" "#d35f0b" "#d35f0b" "#d35f0b" "#d35f0b" "#d35f0b" "#d35f0b" "#d35f0b" [100] "#d35f0b" "#2f976a" "#2f976a" "#2f976a" "#43905e" "#43905e" "#43905e" "#43905e" "#6b8345" "#6b8345" "#6b8345" [111] "#6b8345" "#6b8345" "#ce6208" "#ce6208" "#ce6208" "#946a7b" "#946a7b" "#946a7b" "#b46543" "#b46543" "#a96755" [122] "#a96755" "#a96755" 

at end of day i'd use final vector rowsidecolors argument in heatmap.2.

let's use vector "t":

what length of unique(t)?

length(unique(t)) # 20 

what happens if use rowcol:

pal <- rowcol(length(unique(t))) pal #  [1] "#1b9e77" "#61864b" "#a66f20" "#ce6014" "#a96755" "#846d97" "#8d61aa" "#b7469b" "#e12c8c" "#be5067" "#8e7e40" # [12] "#6ca61c" "#9ba812" "#cba907" "#dba206" "#c48f10" "#ac7b1a" "#957130" "#7d6b4b" "#666666"  length(pal) # 20 

and maximum of "t", i.e.

max(t) # 22 

we see length of pal , maximum value of "t" mismatch. why when "t" equal 21 or 22, na.

you need use rowcol(max(t))[t]