如果可用,将表A中的零值替换为表B中的非零值

  • 本文关键字:替换 非零值 将表 如果 r
  • 更新时间 :
  • 英文 :


我有以下数据:

tableA <- structure(c(0L, 0L, 6L, 0L, 6L, 0L, 3L, 0L, 0L), dim = c(3L, 
3L), dimnames = structure(list(c("0.3", "0.4", 
"0.6"), c("A", "B", "C")), names = c("", "")), class = "table")
A B C
0.3 0 0 3
0.4 0 6 0
0.6 6 0 0
tableB <-structure(c(0L, 1L, 2L, 0L, 3L, 0L, 3L, 2L, 0L), dim = c(3L, 
3L), dimnames = structure(list(c("0.3", "0.4", 
"0.6"), c("A", "B", "C")), names = c("", "")), class = "table")
A B C
0.3 0 0 3
0.4 1 3 2
0.6 2 0 0

我想将tableA中的所有零替换为tableB中的正值,如果它们可用,并以某种方式标记它们。

实现这一点最简单的方法是什么?

所需输出:

A B C
0.3 0 0 3
0.4 1 6 2
0.6 6 0 0

附加的问题是,我想知道哪些值被替换了,但这似乎很难实现。

根据tableA中的0值与==tableB中的正值(> 0)创建一个逻辑索引,并执行赋值

i1 <- tableA == 0 & tableB > 0
tableA[i1] <- tableB[i1]

与产出

> tableA

A B C
0.3 0 0 3
0.4 1 6 2
0.6 6 0 0

我们可以使用!tableA作为蒙版,如下图

> (!tableA) * tableB + tableA
A B C
0.3 0 0 3
0.4 1 6 2
0.6 6 0 0

另一个可能的解决方案:

ifelse(tableA == 0, pmax(tableB,0), tableA)
#>      
#>       A B C
#>   0.3 0 0 3
#>   0.4 1 6 2
#>   0.6 6 0 0

另一种方法

ifelse(tableA == 0 & tableB > 0 , tableB , tableA)

相关内容

  • 没有找到相关文章