У меня возникла проблема при анализе ошибок в sapply
в R.
Предположим, у меня есть матрица, как показано ниже,
B <- matrix(
c(2, 4, 3, 1, 5, 7),
nrow=3,
ncol=2)
Просто, чтобы создать некоторые ошибки, я индексирую за пределами матрицы. (i in 1:5
часть)
for (i in 1:5) {
x <- B[1,i]^2
if(i==1) {
result <- x
}else{
result <- rbind(result,x)
}
}
Конечно, выдает такую ошибку.
Error in B[1, i] : subscript out of bounds
Однако не так сложно найти, на каком шаге выдается ошибка. Так как, если я назову i;
> i
[1] 3
Я легко могу понять, на каком этапе я столкнулся с ошибкой. В этом случае это происходит, когда i=3
.
Однако, чтобы воспользоваться скоростью функции sapply
в R (поскольку петли не рекомендуются из-за отсутствия скорости), я использовал ее, как показано ниже;
sapply(1:5 ,function(j) {
y <- B[1,j]^2
})
Не удивительно, что выдает ту же ошибку.
Error in B[1, j] : subscript out of bounds
Однако теперь я не вижу, на каком этапе я потерпел неудачу. Поскольку ни j
, ни y
не записано!
> j
Error: object 'j' not found
> y
Error: object 'y' not found
Что вы можете предложить по этому поводу? Я знаю, что это простой пример. Но вещи, с которыми я имею дело в действительности, являются более сложными, и становится все труднее найти шаг ошибки.
Заранее спасибо!