gpt4 book ai didi

r - 因子查找中 NA 的意外返回

转载 作者:行者123 更新时间:2023-12-03 16:02:02 25 4
gpt4 key购买 nike

我有一个用作查找表的因素。

condLookup = c(hotdog = "ketchup", ham = "mustard", popcorn = "salt", coffee = "cream")
这按预期工作 - 我放入一个 3-vector 并返回一个 3-vector:
condLookup[c("hotdog", "spinach", NA)]
hotdog <NA> <NA>
"ketchup" NA NA
这也是意料之中的,即使返回都是 NA :
condLookup[c(NA, "spinach")]
<NA> <NA>
NA NA
和这个:
condLookup["spinach"]
<NA>
NA
但是这让我感到惊讶 - 我给出了一个原子 NA 或两个 NA,我得到了一个由 4 个 NA 组成的命名向量。
condLookup[NA]
<NA> <NA> <NA> <NA>
NA NA NA NA
condLookup[c(NA, NA)]
<NA> <NA> <NA> <NA>
NA NA NA NA
显然,对于 vector2 <- condLookup[vector1]然后 vector2将与 vector1 的长度相同除非 vector1 中的每个元素是 NA。在这种情况下 vector2condLookup 的长度相同.
你能解释一下这种行为吗?

最佳答案

NA输入值,类型很重要:c(NA,"spinach")强制NA到字符,它没有被回收:

condLookup[NA]
## <NA> <NA> <NA> <NA>
## NA NA NA NA

condLookup[NA_character_]
## <NA>
## NA
默认类型 NA是合乎逻辑的。逻辑向量将被回收以匹配向量的长度,而字符向量将用于匹配向量的名称。来自 ?[ :

Character vectors will be matched to the ‘names’ of the object


... ‘i’, ‘j’, ‘...’ can be logicalvectors, indicating elements/slices to select. Such vectorsare recycled if necessary to match the corresponding extent.

关于r - 因子查找中 NA 的意外返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62503531/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com