gpt4 book ai didi

r - 未找到搜索词时在 R 中使用 -which() 的意外行为

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

我一直在使用 R which从数据框中删除行的函数。我最近发现,如果搜索词不在 data.frame 中,结果是一个空字符。

# 1: returns A-Q, S-Z (as expected)
LETTERS[-which(LETTERS == "R")]
# 2: returns "character(0)" (not what I would expect)
LETTERS[-which(LETTERS == "1")]
# 3: returns A-Z (expected)
LETTERS[which(LETTERS != "1")]
# 4: returns A-Q, S-Z (expected)
LETTERS[which(LETTERS != "R")]

第二个例子是 -which() 的预期行为吗?什么时候找不到搜索词?我已经将代码切换为使用示例 4 中的语法,这看起来更安全,但我只是好奇。

最佳答案

这是一个众所周知的陷阱。当没有与逻辑测试匹配时,which 函数返回 numeric(0),然后 "["不返回任何内容,而不是返回预期的所有内容。您可以使用:

 LETTERS[ ! LETTERS == "1" ]
LETTERS[ ! LETTERS %in% "1" ]

还有一个需要注意的问题,它让我选择使用 which()。使用逻辑索引时,“[”中使用的 NA 值将返回一行。我一般不想要那样,所以我使用 DFRM[ which(logical) ]虽然这似乎困扰了一些说不需要的人。我只是认为他们正在处理小型数据集,并且很少遇到在他们的控制台上看到数以万计 NA 引起的无用输出行的烦恼。我从不使用否定的哪个版本。

关于r - 未找到搜索词时在 R 中使用 -which() 的意外行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16047825/

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