我想知道是否可以选择NA
列和NA
行从d1
方阵并将它们放入d2
方阵来实现我的DESIRED
, d3
方阵?
这是一个玩具示例,并且d1
and d2
方阵可以是任意维数。这样就实现了类似的功能NA
替换品表示赞赏。
m1="
a1 a2 a3 a4 a5 a6 a7 a8 a9 b1 b2 b3
0 0.0 0 0 0 0 NA 0.0 0.0 NA 0.0 NA
0 0.1 0 0 0 0 NA 0.0 0.0 NA 0.0 NA
0 0.0 0 0 0 0 NA 0.0 0.0 NA 0.0 NA
0 0.0 0 0 0 0 NA 0.0 0.0 NA 0.0 NA
0 0.0 0 0 0 0 NA 0.0 0.0 NA 0.0 NA
0 0.0 0 0 0 0 NA 0.0 0.0 NA 0.0 NA
NA NA NA NA NA NA NA NA NA NA NA NA
0 0.0 0 0 0 0 NA 0.3 0.0 NA 0.0 NA
0 0.0 0 0 0 0 NA 0.0 0.1 NA 0.0 NA
NA NA NA NA NA NA NA NA NA NA NA NA
0 0.0 0 0 0 0 NA 0.0 0.0 NA 0.3 NA
NA NA NA NA NA NA NA NA NA NA NA NA"
d1 <- sapply(read.table(text=m1,h=T),as.numeric)
m2="
a1 a2 a3 a4 a5 a6 a8 a9 b2
1 2.0 1 9 4 0 0.0 3.0 1.0
0 0.1 0 0 0 0 0.0 0.0 0.0
0 0.0 7 0 0 0 0.0 0.0 0.0
0 0.0 0 5 0 0 0.0 0.0 0.0
0 0.0 0 0 0 0 0.0 0.0 0.0
0 0.0 0 0 0 0 0.0 0.0 0.0
0 0.0 0 0 3 0 0.3 0.0 0.0
0 0.0 0 0 0 0 0.0 0.1 0.0
0 0.0 8 0 6 0 0.0 0.0 0.6"
d2 <- as.matrix(read.table(text=m2,h=T))
DESIRED="
a1 a2 a3 a4 a5 a6 a7 a8 a9 b1 b2 b3
1 2.0 1 9 0 0 NA 0.0 3.0 NA 1.0 NA
0 0.1 0 0 0 0 NA 0.0 0.0 NA 0.0 NA
0 0.0 7 0 0 0 NA 0.0 0.0 NA 0.0 NA
0 0.0 0 5 0 0 NA 0.0 0.0 NA 0.0 NA
0 0.0 0 0 0 0 NA 0.0 0.0 NA 0.0 NA
0 0.0 0 0 0 0 NA 0.0 0.0 NA 0.0 NA
NA NA NA NA NA NA NA NA NA NA NA NA
0 0.0 0 0 3 0 NA 0.3 0.0 NA 0.0 NA
0 0.0 0 0 0 0 NA 0.0 0.1 NA 0.0 NA
NA NA NA NA NA NA NA NA NA NA NA NA
0 0.0 8 0 6 0 NA 0.0 0.0 NA 0.6 NA
NA NA NA NA NA NA NA NA NA NA NA NA"
d3 <- as.matrix(read.table(text=DESIRED,h=T))
Since d1
尺寸正确,复制d1
to d3
然后复制元素d2
到非 NA 元素中d3
:
d3 <- d1
d3[!is.na(d3)] <- d2
# or a one-liner
d4 <- replace(d1, !is.na(d1), d2)
identical(d3, d4)
#> [1] TRUE
d3
#> a1 a2 a3 a4 a5 a6 a7 a8 a9 b1 b2 b3
#> [1,] 1 2.0 1 9 4 0 NA 0.0 3.0 NA 1.0 NA
#> [2,] 0 0.1 0 0 0 0 NA 0.0 0.0 NA 0.0 NA
#> [3,] 0 0.0 7 0 0 0 NA 0.0 0.0 NA 0.0 NA
#> [4,] 0 0.0 0 5 0 0 NA 0.0 0.0 NA 0.0 NA
#> [5,] 0 0.0 0 0 0 0 NA 0.0 0.0 NA 0.0 NA
#> [6,] 0 0.0 0 0 0 0 NA 0.0 0.0 NA 0.0 NA
#> [7,] NA NA NA NA NA NA NA NA NA NA NA NA
#> [8,] 0 0.0 0 0 3 0 NA 0.3 0.0 NA 0.0 NA
#> [9,] 0 0.0 0 0 0 0 NA 0.0 0.1 NA 0.0 NA
#> [10,] NA NA NA NA NA NA NA NA NA NA NA NA
#> [11,] 0 0.0 8 0 6 0 NA 0.0 0.0 NA 0.6 NA
#> [12,] NA NA NA NA NA NA NA NA NA NA NA NA
注意:看来您发布的“所需”矩阵的第一个元素应该是1
代替0
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)