2017-06-01 65 views
0

我有一个矩阵的维度如下,矩阵包含一组遗传变异之间的计算距离,我想创建一个新的矩阵或修改PosDiff矩阵只有距离小于或等于500,000。删除某个值下的矩阵元素

dim(PosDiff) 
[1] 597 41099 

我已经试过subset()setdiff()并获得靠不住的结果,如与1列矩阵和41099个意见

感谢

+0

你可以发布一个期望的输出的例子吗? –

+1

欢迎来到StackOverflow。请在发布问题时向我们提供更多信息,以便我们重现问题。那么试试PosDiff [哪个(PosDiff <= 500000)]? –

回答

0

好吧,让我们来去

# 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

也许你只需要:

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

或:

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

依赖性您是否想拥有的,而不是它大于500000

元素缺失值或0
相关问题