当索引超过矢量/矩阵的尺寸时,R中的默认行为是返回NA。例如。R,如果索引超过矩阵尺寸,如何强制抛出错误/警告
> a = as.matrix(1:10)
> a[11]
[1] NA
这在许多情况下是非常不方便的,因为代码一直运行时给出错误的结果,甚至没有发出警告。 有谁知道是否有可能在代码中更改此默认行为,以便在这些情况下引发错误或警告,而不是在索引超出矢量/矩阵的维度时返回NA?
当索引超过矢量/矩阵的尺寸时,R中的默认行为是返回NA。例如。R,如果索引超过矩阵尺寸,如何强制抛出错误/警告
> a = as.matrix(1:10)
> a[11]
[1] NA
这在许多情况下是非常不方便的,因为代码一直运行时给出错误的结果,甚至没有发出警告。 有谁知道是否有可能在代码中更改此默认行为,以便在这些情况下引发错误或警告,而不是在索引超出矢量/矩阵的维度时返回NA?
一个解决方案是让您在使用[
对矩阵进行索引时使用两个参数(行和列),这对矩阵来说是更“正常”的事情。这种使用会触发一个错误:
a[11, 1] <- NA
# Error in `[<-`(`*tmp*`, 11, 1, value = NA) : subscript out of bounds
的另一种方式,假设你a[11]
是一个脚本或功能的一部分,是把自己的错误检查。例如,
for (j in 1:20) {
ifelse(j <= length(a), a[j], cat('index out of bounds'))
}
您可以使用stop()来停止执行并强制执行错误。我希望看到你想使用这个背景。如果在你的例子中实现'stop()',它会产生一个错误,但我不知道它是否会阻止任何循环或类似的计划执行。 – 2014-10-07 08:57:24
我希望至少在某个代码的执行过程中进行R更改行为,以便使用超过矩阵的维度的索引的任何以下情况都会发出stop()而不是返回NA或至少发出警告()。 – Giuseppe 2014-10-07 09:00:57
我需要类似于一行的东西放在代码的开头,这个选项对所有后续行都有效。 – Giuseppe 2014-10-07 09:02:19