我有一个矩阵 A 看起来像
A = matrix(1:9,3,3)
A
[,1] [,2] [,3]
[1,] 1 4 7
[2,] 2 5 8
[3,] 3 6 9
Run Code Online (Sandbox Code Playgroud)
以及我感兴趣的元素索引矩阵。第 1 列包含行索引,第 2 列包含列索引:
v = matrix(c(1, 3, 2, 2, 2, 3), nrow = 3, ncol = 2)
v
[,1] [,2]
[1,] 1 2
[2,] 3 2
[3,] 2 3
Run Code Online (Sandbox Code Playgroud)
我想使用“v”中的行和列索引从“A”中提取数字;索引对应于数字 4 ( A[1, 2])、6 ( A[3, 2]) 和 8。
如何在不使用循环的情况下直接从“A”中提取这些数字?
当我使用
A[v[ , 1], v[ , 2]]
Run Code Online (Sandbox Code Playgroud)
我得到
[,1] [,2] [,3]
[1,] 4 4 …Run Code Online (Sandbox Code Playgroud) 我在我的代码中使用数据检查,例如以下代码:
if (...)
stop(paste('Warning: Weights do not sum up to 1')
Run Code Online (Sandbox Code Playgroud)
问题是如果条件为真并且警告出现在控制台中,则代码不会停止运行.如果隐藏在长代码中,则需要始终在控制台输出中向上滚动以查看是否出现警告.
当停止警告出现且条件为真时,有没有办法告诉R中断所有代码?BREAK之类的东西?
我在这里不代表一个可重复的例子,因为我的代码很长.
编辑:
这是一个小例子:
当我执行
a=1+2
if (a==3)
stop('a equals 3')
b=4
1+1
Run Code Online (Sandbox Code Playgroud)
打印后我想停止
> a=1+2
>
> if (a==3)
+ stop('a equals 3')
Error: a equals 3
Run Code Online (Sandbox Code Playgroud)
但R执行一切,也是最后一部分:
> a=1+2
>
> if (a==3)
+ stop('a equals 3')
Error: a equals 3
>
>
> b=4
>
> 1+1
[1] 2
Run Code Online (Sandbox Code Playgroud)