【发布时间】:2018-03-15 08:44:43
【问题描述】:
我有两个 TRUE/FALSE 值向量:
x1 <- c(TRUE, FALSE, TRUE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE,
FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE,
TRUE, FALSE, FALSE, FALSE, FALSE, FALSE)
x2 <- c(FALSE, TRUE, FALSE, TRUE, FALSE, TRUE, FALSE, FALSE, FALSE,
FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE,
FALSE, TRUE, FALSE, FALSE, FALSE, FALSE)
我想在x1 和x2 中获取TRUE 值的索引,并分别在这些索引中用0.75 和-0.25 填充新向量。所有其他单元格将是0。
which(x1)
[1] 1 3 5 19
which(x2)
[1] 2 4 6 20
因此,最终向量将在索引 1、3、5、19 中具有 0.75,在索引 2、4、6、20 中具有 -0.25。
如何在 R 中实现这一点?
解决方案:
我找到了方法。
newx <- rep(0, length(x1))
newx [which(x1)] <- 0.75
newx [which(x2)] <- -0.25
【问题讨论】:
-
c(0, .75, -.25)[x1 + x2 * 2 + 1] -
@DavidArenburg 这是一个不错的解决方案。 OP 多次更改了所需的输出,因此提供的解决方案可能不是最新的。