首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用向量搜索矩阵行

用向量搜索矩阵行
EN

Stack Overflow用户
提问于 2015-02-17 09:56:08
回答 2查看 45关注 0票数 1

我想研究一下矩阵中的每一行,看看它的值是否大于给定向量中的值。然后,我想将值转换为1或0,这取决于它是否成功。我对编程非常陌生,尽管我在寻找答案,但我并没有自己想出答案。谢谢。

代码语言:javascript
复制
v <- c(0.2,0.6,0.1,0.6,0.9)
m <- matrix(c(runif(15,min=0,max=1)),ncol=5,nrow=3)

largerthan <- m>v
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-02-17 10:00:44

你可以试试

代码语言:javascript
复制
 (m >v[col(m)])+0
 #      [,1] [,2] [,3] [,4] [,5]
 #[1,]    1    0    1    0    0
 #[2,]    1    1    1    1    0
 #[3,]    1    1    1    0    0

或者一种更快的方法

代码语言:javascript
复制
 (m > rep(v, each=nrow(m)))+0L

原始数据集"m“是

代码语言:javascript
复制
 m
 #        [,1]      [,2]      [,3]      [,4]      [,5]
 #[1,] 0.2925740 0.5188971 0.2797356 0.2547251 0.6716903
 #[2,] 0.2248911 0.6626196 0.7638205 0.6048889 0.6729823
 #[3,] 0.7042230 0.9204438 0.8016306 0.3707349 0.3204306

如果您需要知道任何行值是否大于任何向量元素

代码语言:javascript
复制
 apply((m >v[col(m)]), 1, any)
 #[1] TRUE TRUE TRUE

数据

代码语言:javascript
复制
set.seed(24)
m <- matrix(runif(15,min=0,max=1),ncol=5,nrow=3)
v <- c(0.2,0.6,0.1,0.6,0.9)
票数 2
EN

Stack Overflow用户

发布于 2015-02-17 10:10:45

您可以尝试以下代码:

代码语言:javascript
复制
ifelse(m > matrix(v, ncol = 5, nrow = 3, byrow = TRUE), 1, 0)
##      [,1] [,2] [,3] [,4] [,5]
## [1,]    1    1    0    0    1
## [2,]    1    0    1    0    0
## [3,]    1    1    1    0    0
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28559177

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档