有条件地使用两个其他向量中的TRUE值的索引填充向量

时间:2018-03-15 08:44:44

标签: r dataframe matrix vector grep

我有两个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)

我想在x1x2中获取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

2 个答案:

答案 0 :(得分:1)

如果x1等于TRUE,我们会指定.75。对于x1不是TRUE的情况,我们会查看x2TRUE并指定值-.25。如果x1x2都等于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)