我的矩阵如下:
> ld1
rs11721 rs3813199 rs3766186 rs7515488 rs6675798 rs6603785 rs11804831 rs11260930 rs221035 rs221045 rs2132851 rs12751725
rs3813199 0.565 1.000 0.988 0.567 0.448 0.351 0.160 0.003 0.001 0.001 0.001 0.001
rs3766186 0.553 0.988 1.000 0.560 0.438 0.343 0.155 0.003 0.001 0.001 0.001 0.001
rs7515488 0.447 0.567 0.560 1.000 0.565 0.595 0.342 0.003 0.000 0.000 0.000 0.000
rs6675798 0.494 0.448 0.438 0.565 1.000 0.752 0.383 0.000 0.000 0.000 0.000 0.000
rs6603785 0.544 0.351 0.343 0.595 0.752 1.000 0.454 0.000 0.000 0.000 0.000 0.000
rs11804831 0.289 0.160 0.155 0.342 0.383 0.454 1.000 0.002 0.001 0.001 0.001 0.001
rs11260930 0.000 0.003 0.003 0.003 0.000 0.000 0.002 1.000 0.284 0.284 0.243 0.243
rs221035 0.001 0.001 0.001 0.000 0.000 0.000 0.001 0.284 1.000 1.000 0.856 0.856
如何删除此矩阵中大于0.95但不等于1的所有条目?因此,我将所有数据都保持在0.95以下,而所有这些均等于1。
我尝试过:
md1 <- ld1[ld1[, ] <0.95, ]
但是它没有删除大于0.95的条目
我想删除这些条目,而不仅仅是将它们替换为NA。
答案 0 :(得分:1)
如果您想使用NA
进行回复,就足够了:
set.seed(1)
ld1 <- matrix(sample(1:1000, 81, replace = T)/1000, 9, 9)
diag(ld1) <- 1
ld1[ld1 > .95 & ld1 < 1] <- NA
ld1
[,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9]
[1,] 1.000 0.062 0.381 0.383 0.795 0.790 0.071 0.333 0.347
[2,] 0.373 1.000 0.778 0.870 0.108 0.024 0.100 0.651 0.334
[3,] 0.573 0.177 1.000 0.341 0.724 0.478 0.317 0.259 0.477
[4,] 0.909 0.688 0.213 1.000 0.412 0.733 0.519 0.479 0.893
[5,] 0.202 0.385 0.652 0.600 1.000 0.693 0.663 0.767 0.865
[6,] 0.899 0.770 0.126 0.494 0.648 1.000 0.407 0.085 0.390
[7,] 0.945 0.498 0.268 0.187 0.783 0.862 1.000 0.876 0.778
[8,] 0.661 0.718 0.387 0.828 0.554 0.439 0.294 1.000 NA
[9,] 0.630 NA 0.014 0.669 0.530 0.245 0.460 0.840 1.000
如果您要删除包含任何值> .95的列和行,就足够了。虽然,只要删除列或行,它就可以工作。如果这不是您要查找的内容,可以张贴您的预期输出:
remove_me <- which(ld1 > .95 & ld1 < 1, arr.ind = T)
ld1[-remove_me[,1], -remove_me[,2]]
[,1] [,2] [,3] [,4] [,5] [,6] [,7]
[1,] 1.000 0.381 0.383 0.795 0.790 0.071 0.333
[2,] 0.373 0.778 0.870 0.108 0.024 0.100 0.651
[3,] 0.573 1.000 0.341 0.724 0.478 0.317 0.259
[4,] 0.909 0.213 1.000 0.412 0.733 0.519 0.479
[5,] 0.202 0.652 0.600 1.000 0.693 0.663 0.767
[6,] 0.899 0.126 0.494 0.648 1.000 0.407 0.085
[7,] 0.945 0.268 0.187 0.783 0.862 1.000 0.876
编辑:更新了答案和示例,假设它是主对角线上具有1.000的相关矩阵。我还假设除了主要对角线之外,没有完美的相关性。
答案 1 :(得分:0)
这是一种解决方案,方法是创建一个函数,该函数执行所需的操作,然后使用apply在所有矩阵元素上运行它。
remove_95 = function(x){
ifelse(x > 0.95, NA, x)
}
apply(ld1, c(1,2), FUN = remove_95)
答案 2 :(得分:0)
我解决了熔化基质的问题:
{
"account": {
"type": "COMPANY"
},
"person": {
"firstName": "John",
"lastName": "Doe"
},
"company": {
"name": "XYZ Corp"
}
}