dplyr mutate-ifelse 组合未创建正确的条件变量

mkr*_*mus 0 r dplyr

我正在尝试使用 dplyr 中的 mutate 创建条件变量,但这似乎对我不起作用。请参阅我尝试创建的示例数据框和组合得分变量。请注意,新变量“combined.score”的第三个观测值不是 B、C 和 D 的总和。看来仅计算第一个观测值,并且该值用于每个行观测值。

我在这里缺少什么?想要一个发生这种情况的原因(没有太多替代代码或解决方案)

df <- 
  data.frame(B=c(1,0,0), 
             C=c(3,4,9), 
             D=c(1,1,0))

#A function to calculate stations whether there is a communication or process component or both
df <- df %>%
  mutate(combined.score = ifelse("B" %in% names(.) & "C" %in% names(.) & "D" %in% names(.), B + C + D,
                                 ifelse("B" %in% names(.) & "C" %in% names(.), B + C,
                                        B))) %>%
  mutate(combined.score.correct = B + C + D) 
Run Code Online (Sandbox Code Playgroud)

Mar*_*ius 5

的文档ifelse说:

ifelse 返回与test 形状相同的

这里test"B" %in% names(df) & "C" %in% names(df) & "D" %in% names(df),它返回一个 1 元素向量

[1] TRUE
Run Code Online (Sandbox Code Playgroud)

因此,该ifelse调用返回一个仅包含 的第一个元素的 1 元素向量B + C + D,然后在整个向量中循环使用该元素。