r语言 - 带有字符串的 ifelse 语句


double="true"
data=data.frame("var1"=c(1:10))
data$var2=ifelse(double=="true",2*data$var1,NA)
data$var2want=2*data$var1

如果我想将变量加倍,我有一个字符,该字符将"true"存储为"true"。在这个例子中,我从等于 1:10 的 var1 开始。双="真"。所以我想让 var2 等于 (1:10(*2。所需的输出是var2want。但是,当我应用 ifelse 语句时,我只得到所有值的 var2=2。我不确定如何解决此问题。

double长度为 1

length(double)
#[1] 1

length(data$var1)
#[1] 10

使用 ifelse 时,它返回长度与 test 相同的值

double == "true"

返回长度为 1 的向量,因此您只返回一个值,即计算的第一个值

2*data$var1[1]
#[1] 2

并且此值在所有值中循环使用。

为了使ifelse为所有价值工作,我们需要以某种方式使长度相等

ifelse(rep(double == "true", length(data$var1)), 2*data$var1, NA)
#[1]  2  4  6  8 10 12 14 16 18 20

但是,如果您只有一个值要比较,最好使用简单的if/else而不是ifelse

data$var2 <- if (double == "true") 2*data$var1 else NA 

最新更新