我有两个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,2,6,20中的索引1,3,5,19和0.75
中将-0.25
。
我如何在R?
中实现这一目标SOLUTION:
我找到了办法。
newx <- rep(0, length(x1))
newx [which(x1)] <- 0.75
newx [which(x2)] <- -0.25
答案 0 :(得分:1)
如果x1
等于TRUE
,我们会指定.75
。对于x1
不是TRUE
的情况,我们会查看x2
是TRUE
并指定值-.25
。如果x1
和x2
都等于FALSE
,请指定值0
。
ifelse(x1, 0.75, ifelse(x2, -.25, 0))
#[1] 0.75 -0.25 0.75 -0.25 0.75 -0.25 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.75 -0.25 0.00 0.00 0.00 0.00
答案 1 :(得分:0)
这应该有效
x1_number <- ifelse(x1 == TRUE, yes = 0.75, no = 0)
x2_number <- ifelse(x2 == TRUE, yes = -1, no = 0)
df <- data.frame(your_column_name = x1_number + x2_number)