gpt4 book ai didi

r - 是否有一致的方法来强制错误列表或向量索引错误

转载 作者:行者123 更新时间:2023-12-04 07:21:07 24 4
gpt4 key购买 nike

我对其他编程语言的期望是 (1:4)[3:5]list(asdf = 4, qwerty = 5)$asdg都应该引发异常。相反,第一个默默地返回 c(3, 4, NA) ,第二个默默地返回 NULL (与或 list(asdf = 4, qwerty = 5)[[asdg]] 一样)。
虽然这种行为偶尔会很有用,但更多时候(根据我的经验),它会变成一个小的错字,一个错误,或者无法在触发器使用的任何地方重命名变量,以便立即和轻松-to-debug 错误,当静默传播 NULL 时,会触发真正令人困惑的错误大约 20(或 200)步。 s 或 NA s 最终被输入到一个对它们很响亮的函数或操作中。 (当然,这仍然比它根本不产生错误,只是垃圾结果的时候要好。)data.frame()[,'wrong']给出错误,但 data.frame()['wrong',]刚刚返回 NA .
我正在寻找的是一种做 vector/array/list/data.frame/etc 的方法。如果我使用无效的索引,将立即可靠地导致错误的下标/成员访问。对于列表,get('wrong', list())做我正在寻找的东西,但这有时会很丑陋(特别是如果使用结果作为下标其他东西)。它是可用的,但更好的东西会很好。对于向量(和 data.frame 行),即使这样也行不通。
有没有好的方法可以做到这一点?

最佳答案

我不确定您是否可以全局更改此行为,但您可以根据数据类型根据需要单独处理它们。
例如,对于向量 -

subset_values <- function(x, ind) {
if(min(ind) > 0 && max(ind) <= length(x)) x[ind]
else stop('Incorrect length')
}

subset_values(1:4, 3:5)
#Error in subset_values(1:4, 3:5) : Incorrect length

subset_values(1:4, -1:3)
#Error in subset_values(1:4, -1:3) : Incorrect length

subset_values(1:4, 1:3)
#[1] 1 2 3

关于r - 是否有一致的方法来强制错误列表或向量索引错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68493369/

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