我想研究一下矩阵中的每一行,看看它的值是否大于给定向量中的值。然后,我想将值转换为1或0,这取决于它是否成功。我对编程非常陌生,尽管我在寻找答案,但我并没有自己想出答案。谢谢。
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发布于 2015-02-17 10:00:44
你可以试试
(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或者一种更快的方法
(m > rep(v, each=nrow(m)))+0L原始数据集"m“是
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如果您需要知道任何行值是否大于任何向量元素
apply((m >v[col(m)]), 1, any)
#[1] TRUE TRUE TRUE数据
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)发布于 2015-02-17 10:10:45
您可以尝试以下代码:
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 0https://stackoverflow.com/questions/28559177
复制相似问题