引用包含布尔值的其他向量以在 R 中创建另一个向量



我的数据帧 df 中有两个向量,它们是

a = c(TRUE, FALSE, TRUE, TRUE, FALSE)
b = c(1, 2, 3, 4, 5)

我想创建第三个 c 这样

c = c(1, 0, 3, 4, 0)

它是 b,但只要 a 中的元素为 FALSE,就会消失。

我尝试了类似的东西

df$c <- df$b[df$a == TRUE]

它失败了,所以我做了零向量,并试图在 a 为 TRUE 时插入 b 的值,

zv = rep(0, 5)
df$c <- zv[...]

但不知道这里的确切方法。任何帮助将不胜感激。

我们可以否定a,将FALSE更改为TRUE并将这些值分配给0。

b[!a] <- 0
b
#[1] 1 0 3 4 0

我们也可以使用replace

replace(b, !a, 0)
#[1] 1 0 3 4 0

另一种方法是将b乘以a,因为TRUE被强制为 1,FALSE为 0。

b * a

最新更新