首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在IF条件下限制向量的2个界限

在IF条件下限制向量的2个界限
EN

Stack Overflow用户
提问于 2020-10-04 05:47:38
回答 1查看 45关注 0票数 1

我想在IF条件下限制向量的2个边界。然而,当我尝试使用下面的函数时,我收到警告"the condition has length >1 and only the first element will be use“:

代码语言:javascript
复制
rho <- c(0.8,0,-0.5)
sigma.S <- 0.4
sigma.M <- 0.1
mu.S <- 0.06
T <- 1
N <- 365
dt <- T/N

m <- c(100,102,100,99,101)

z <- rnorm(N)
P <- matrix(0, N, 1)
P[1] <- m[1]

for (i in 2:N){
  
  P[i] <- P[i-1]*( 1 + sigma.M*sqrt(dt)*z[i] )
}

tPts <- c(0,91,182,273,364)
yPts <- c(m[1]-P[1],m[2]-P[92],m[3]-P[183],m[4]-P[274],m[5]-P[365])

a <- tPts[1]
A <- yPts[1]

for(i in 2:5){
    
  t <- seq(0,364,1)
  b <- tPts[i]
  B <- yPts[i]
    
  if(a<=t & t<=b){
      
    y <- ( B*(t-a) - A*(t-b) )/(b-a)
      
    return(y)
  }
    
  a <- b
  A <- B
}

有人能看到这里的问题所在吗?提前感谢!

EN

Stack Overflow用户

回答已采纳

发布于 2020-10-04 05:55:12

我们可以通过使用all来改变循环中的if条件

代码语言:javascript
复制
if(all(a<=t) & all(t<=b))

假设我们需要条件来满足't‘的长度

由于a <= tt <= b返回与't‘具有相同length的逻辑向量,并且这里't’被创建为从0到364的序列,即,即使其中一个向量的长度为1,即,'a‘或'b',比较运算符将该元素循环用于跨较大长度的向量进行比较

代码语言:javascript
复制
5 < (1:6)
#[1] FALSE FALSE FALSE FALSE FALSE  TRUE

并且if/else要求输入的长度为1。

票数 0
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64189329

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档