我有两个 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

我真的被困住了,无法解决。谢谢您的帮助!

最佳答案

我们需要匹配一个字符集而不是逻辑。在这里,“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,而逻辑 vector 的长度为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")

关于r - 使用列表遍历命名向量,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/55434440/

10-12 16:40