使用列表遍历命名向量

时间:2019-03-30 18:23:03

标签: r vector

我有两个向量

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 个答案:

答案 0 :(得分:5)

我们需要匹配一个字符集而不是逻辑字符集。这里,“ named.v”的namescharacter类(尽管在创建的示例中存在不一致的地方-通常是这种情况)

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,因此从“ named.v”中选择了前3个后,就什么也没有了,所以它丢失了,NA代表丢失了值

数据

v <- c(TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE)
named.v <- c(`TRUE` = "#FF0000FF", `FALSE`="#00FF00FF", `NA`="0000FFFF")