首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >删除某一值下的矩阵元素

删除某一值下的矩阵元素
EN

Stack Overflow用户
提问于 2017-06-01 22:42:47
回答 2查看 39关注 0票数 0

如果我有一个维度如下的矩阵,该矩阵包含一组遗传变异之间的计算距离,我想创建一个新矩阵或将PosDiff矩阵修改为仅距离小于或等于500,000的距离。

代码语言:javascript
复制
dim(PosDiff)
[1]   597 41099

我尝试过subset()setdiff(),得到的结果并不稳定,比如一个有1列和41099个观察值的矩阵

谢谢

EN

回答 2

Stack Overflow用户

发布于 2017-06-01 23:09:14

好的,让我们开始吧

代码语言:javascript
复制
# Generate a random matrix with 4 rows and 3 cols
> m <- matrix(runif(12), nrow=4)
> m
#           [,1]      [,2]      [,3]
#[1,] 0.62361346 0.7793682 0.9447203
#[2,] 0.14844661 0.7335280 0.2936238
#[3,] 0.08026447 0.8172304 0.1490721
#[4,] 0.46406955 0.1701625 0.7193786

# Then keep all the elements <= 0.5 setting all the rest to NA
> m1 <- apply(m, FUN=function(x){ifelse(x<=0.5, NA, x)}, MARGIN = c(1,2))
> m1
#           [,1]      [,2]      [,3]
#[1,]         NA        NA        NA
#[2,] 0.14844661        NA 0.2936238
#[3,] 0.08026447        NA 0.1490721
#[4,] 0.46406955 0.1701625        NA

如果您只想要小于0.5的值,那么可以运行m[which(m<=0.5)]

票数 0
EN

Stack Overflow用户

发布于 2017-06-01 23:50:19

也许你只需要:

ifelse(PosDiff <= 500000., PosDiff, NA)

或者:

ifelse(PosDiff <= 500000., PosDiff, 0)

这取决于您是否希望有缺失值或0,而不是大于500000的元素。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44310619

复制
相关文章

相似问题

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