小编fuj*_*015的帖子

使用矩阵中的行和列索引从矩阵中提取值

我有一个矩阵 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)

r matrix

7
推荐指数
1
解决办法
5896
查看次数

停止在R中执行代码

我在我的代码中使用数据检查,例如以下代码:

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)

r

3
推荐指数
1
解决办法
1万
查看次数

标签 统计

r ×2

matrix ×1