gpt4 book ai didi

R - 使用超出列表长度的双括号进行索引时出错的原因

转载 作者:行者123 更新时间:2023-12-01 12:41:49 27 4
gpt4 key购买 nike

<分区>

对于单括号,大于列表长度的索引返回包含单个元素的列表:NULL。使用不存在的名称进行索引会返回相同的结果。

x <- as.list(1:10)

x[11]
# [[1]]
# NULL

x["i"]
# [[1]]
# NULL

我希望使用 [[ 进行索引返回值 NULL,因为 x[["i"]]x$i 做。但是,[[-使用超出列表长度的数值进行索引会返回错误。

x[["i"]]
# NULL

x$i
# NULL

x[[11]]
# Error in x[[11]] : subscript out of bounds

这里不同的原因是什么?为什么只针对这一种情况抛出错误,而不是在字符串索引与元素名称不匹配时抛出错误?

与现有问题的区别

澄清一下,我不是在问何时使用 [[[$。我知道 [[$ 只能用于访问单个列表元素的内容。我想知道为什么大于列表长度的数字索引失败并出现错误 for [[ only

措辞不同:如果 x[[11]] 使用“下标越界”,为什么 x[11] 没有做同样的事情?

我不认为这个问题是重复的。虽然 this question 讨论了相同的运算符,但我阅读的所有答案都没有直接解决我所询问的 NULL 和错误差异。

确定的不一致

查看 Advanced R 中的第 4.3.3 节,我发现这种不一致的行为实际上是众所周知的。 purrr 中的函数 pluck()chuck() 正是出于这个原因而发明的。不过,我想知道是否有人可以提供一些背后的推理,说明为什么 R 会以这种方式编程?

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