Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/310.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
就R中的故障步骤而言,For loop vs Sapply_R_For Loop_Sapply - Fatal编程技术网

就R中的故障步骤而言,For loop vs Sapply

就R中的故障步骤而言,For loop vs Sapply,r,for-loop,sapply,R,For Loop,Sapply,在分析R中的sapply中的错误时,我面临一个问题 假设我有一个矩阵,如下所示 B <- matrix(    c(2, 4, 3, 1, 5, 7),    nrow=3,    ncol=2) 当然,它会出现这样的错误 Error in B[1, i] : subscript out of bounds 然而,不难发现哪一步出错 > i [1] 3 我可以很容易地理解我在哪一步遇到了错误。在这种情况下,它发生在I=3时 然而,为了利用R中sapply函数的速度(因为由于速度

在分析R中的
sapply
中的错误时,我面临一个问题

假设我有一个矩阵,如下所示

B <- matrix( 
  c(2, 4, 3, 1, 5, 7), 
  nrow=3, 
  ncol=2)
当然,它会出现这样的错误

Error in B[1, i] : subscript out of bounds
然而,不难发现哪一步出错

> i
[1] 3
我可以很容易地理解我在哪一步遇到了错误。在这种情况下,它发生在
I=3

然而,为了利用R中
sapply
函数的速度(因为由于速度不足,不推荐使用循环),我使用了它,如下所示:

sapply(1:5 ,function(j) {

       y <- B[1,j]^2

})
然而,现在我不知道我在哪一步失败了。因为既不记录
j
也不记录
y

> j
Error: object 'j' not found
> y 
Error: object 'y' not found
你有什么建议?我知道这是一个简单的例子。但是,我在现实中处理的事情更加复杂,更难找到错误步骤


提前谢谢

如果使用RStudio,最简单的方法是在菜单中激活:调试>出错>插入代码

这将在出错时打开浏览器,您将能够看到j的值


如果不使用RStudio,可以设置
选项(error=recover)
,这也会在出现错误时打开浏览器。(在您的特定情况下,选择第3帧,您将能够看到j的值)

添加一个
print
sapply(1:5,函数(j){y@Jimbou,但在这种情况下,它会指定print(j)sapply输出结果的值。我的观点不是失去实际结果,在本例中为y。然后在修复sapply后删除它。或者返回循环。如果需要错误处理的点更复杂,则可以在应用的函数中处理错误。在函数开始时,可以有一个n如果ncol(B)>j不要尝试在
y之前执行步骤
Error in B[1, j] : subscript out of bounds
> j
Error: object 'j' not found
> y 
Error: object 'y' not found