#r #vector
#r #вектор
Вопрос:
У меня есть два вектора,
v <- (TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE)
named.v <- (TRUE = "#FF0000FF", FALSE="#00FF00FF", NA="0000FFFF")
Я пытаюсь получить цвет, связанный со значениями в V.
Я пытался сделать это
named.v[v]
Но все, что это делает, это возвращает
TRUE FALSE <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA>
"#FF0000FF" "#00FF00FF" "#0000FFFF" NA NA NA NA NA NA NA
Я действительно застрял и не могу в этом разобраться. Спасибо за помощь!
Ответ №1:
Нам нужно сопоставить набор символов вместо логического. Здесь 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"
Теперь давайте посмотрим на проблему в коде операционной системы, поскольку ‘v’ является logical
, истинно подразумевая, что следует выбрать это значение, Но ‘named.v’ имеет длину 3, в то время как логический вектор имеет длину 10, поэтому после выбора первых 3 из ‘named.v’ ничего не осталось, поэтому оно отсутствует и NA
представляет отсутствующее значение
данные
v <- c(TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE)
named.v <- c(`TRUE` = "#FF0000FF", `FALSE`="#00FF00FF", `NA`="0000FFFF")
Комментарии:
1. Боже мой. Большое вам спасибо, это ломало мне голову. Все еще изучаю основы R, поскольку обычно я привык к Python.