嵌入式条件表达式

时间:2014-05-06 13:15:36

标签: r

我有一个向量和一个常量,我在下面的表达式中使用:a到i是函数的结果

Y<- c(0.2,0.09,0.3,0.2,0.4,0.5,0.2,0.1,1)
x<- 0.13
G<-if(tail(Y,1)==1)

{a <- g*h
b <- i*r
d <- o*p
e <- j*k
f <- s*y
g <- t*w
h <- v*l
i <- n*m

if(x < 0.1)  a else 0+
if(x < 0.11)  b else 0+
if(x < 0.12)  c else 0+
if(x < 0.13)  d else 0+
if(x < 0.14)  e else 0+
if(x < 0.15)  f else 0+
if(x < 0.16)  g else 0+
if(x < 0.17)  h else 0+
if(x < 0.18)  i else 0}  else 0 

G
[1] 30

我想获得结果G,它是{}之间最后一个表达式中前三个(a,b,c)之和的输出。尝试过ifelse并且不起作用,因为它只选择一个,如上例所示。

a到i是函数的结果,例如下面的例子(不能将函数和向量放在太长的位置),并且不能按照上面公开的因素排序。

{a <- summary(ResFit)$coef[55]*summary(ResFit)$coef[91]
b <- summary(ResFit)$coef[56]* summary(ResFit)$coef[93]
c <- summary(ResFit)$coef[57]*summary(ResFit)$coef[95]
d <- summary(ResFit)$coef[58]*summary(ResFit)$coef[97]
e <- summary(ResFit)$coef[50]*summary(ResFit)$coef[99]
f <- summary(ResFit)$coef[59]*summary(ResFit)$coef[101]
g <- summary(ResFit)$coef[60]*summary(ResFit)$coef[103]
h <- summary(ResFit)$coef[61]*summary(ResFit)$coef[105]
i <- summary(ResFit)$coef[62]*summary(ResFit)$coef[107]

非常感谢

1 个答案:

答案 0 :(得分:1)

在这里,您可以使用cut()找到x值的正确范围,然后您可以将其用作每个间隔的返回值向量中的索引。

x <- 0.13
vals <- c(apply(embed(1:10,2),1,prod),0) #these are a..i values
z <- cut(x, breaks=c(-Inf, .1,seq(.11,.18, by=.01), Inf), right=F) #find the interval
vals[z]

使用编辑...

smry<-summary(ResFit)$coef
vals<-smry[c(55,56,57,58,50,59,60,61,62)] * smry[seq(91,107, by=2)]
x <- 0.13
z <- cut(x, breaks=c(-Inf, .1,seq(.11,.18, by=.01), Inf), right=F) #find the interval
vals[z]