R,如果索引超过矩阵维度,如何强制抛出错误/警告

时间:2014-10-07 08:41:47

标签: r matrix error-handling indexing

当索引超出向量/矩阵的维度时,R中的默认行为是返回NA。例如。

> a  = as.matrix(1:10)
> a[11]
[1] NA

在许多情况下这非常不方便,因为代码一直运行会产生错误的结果,甚至不会发出警告。 有没有人知道是否可以在代码中更改此默认行为,以便在这些情况下抛出错误或警告而不是在索引超出向量/矩阵的维度时返回NA?

2 个答案:

答案 0 :(得分:2)

一种解决方案是在使用[索引矩阵时使用两个参数(row和col),这是更多" normal"与矩阵有关的事情。该用法将触发错误:

a[11, 1] <- NA
# Error in `[<-`(`*tmp*`, 11, 1, value = NA) : subscript out of bounds

答案 1 :(得分:0)

另一种方式,假设你的a[11]是脚本或函数的一部分,就是进行自己的错误检查。例如,

for (j in 1:20 ) {
   ifelse(j <= length(a), a[j], cat('index out of bounds') ) 
   }