Нам нужно сопоставить набор символов вместо логического.Здесь names
файла named.v - это класс character
(хотя в созданном примере есть несоответствия - в общем случае)
named.v[as.character(v)]
# TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
#"#FF0000FF" "#FF0000FF" "#FF0000FF" "#FF0000FF" "#FF0000FF" "#FF0000FF" "#FF0000FF" "#FF0000FF" "#FF0000FF" "#FF0000FF"
Теперь давайте посмотримв вопросе кода OP, где 'v' равно logical
, значение TRUE подразумевает, что следует выбрать это значение, но «named.v» имеет длину 3, тогда как логический вектор имеет длину 10, поэтому после первых 3выбрано из 'named.v', ничего не осталось, поэтому оно отсутствует, и NA
представляет отсутствующее значение
data
v <- c(TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE)
named.v <- c(`TRUE` = "#FF0000FF", `FALSE`="#00FF00FF", `NA`="0000FFFF")