我有一个向量和一个常量,我在下面的表达式中使用: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]
非常感谢
答案 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]