即使条件满足,if循环也会出错

时间:2017-12-11 17:37:42

标签: r if-statement

示例数据:

t.mean <- c(15.02,8)
t.base <- 10
t.opt <- 28

dat <- data.frame(cbind(t.mean,t.base,t.opt))
dat

 t.mean t.base t.opt
1  15.02     10    28
2   8.00     10    28

我想在dat中创建另一个名为fT的列。条件是如果t.mean >= t.base t.mean <= t.opt,则fT计算为(t.mean - t.base)/(t.opt - t.base)。如果不是,则指定值0。

在这种情况下,第二行不符合条件(t.mean >= t.base),因此fT的值应为零。这是我的代码:

if(dat$t.mean >= dat$t.base & dat$t.mean <= dat$t.opt){
   dat$fT <- (dat$t.mean - dat$t.base)/(dat$t.opt - dat$t.base)
} else {
   dat$fT <- 0
}

dat

 t.mean t.base t.opt         fT
1  15.02     10    28  0.2788889
2   8.00     10    28 -0.1111111

我不确定为什么会这样?此外,它还会生成错误

 In if (dat$t.mean >= dat$t.base & dat$t.mean <= dat$t.opt) { :
   the condition has length > 1 and only the first element will be used

相反,如果我使用ifelse语句,它会给我正确答案。

 ifelse(dat$t.mean >= dat$t.base & dat$t.mean <= dat$t.opt, dat$fT <- (dat$t.mean - dat$t.base)/(dat$t.opt - dat$t.base),0)

[1] 0.2788889 0.0000000

只是想知道我需要修复我的第一个代码?

由于

0 个答案:

没有答案