首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用循环和条件获取R中的斜率

使用循环和条件获取R中的斜率
EN

Stack Overflow用户
提问于 2017-07-08 06:24:50
回答 1查看 230关注 0票数 0

我正在处理一个数据框,它包含x和y列,值作为行。我想计算每2行x和y的斜率,然后使用计算出的斜率,记录斜率的“稳定性”是“高”还是“低”。看过代码后,您会更好地理解。这段代码有什么问题?当我输入稳定时,R返回NULL。

代码语言:javascript
复制
slope <- (acc$y[i+1] - acc$y[i]) / (acc$x[i+1] - acc$x[i])
stability <- c()
for (i in 1:nrow(acc)) {
  if (slope[i] > 0 & slope[i] < 0.8) {
    stability[i] <- "low"
  } else if (slope[i] >= 0.8 & slope[i] <= 1) {
    stability[i] <- "high"
  } else if (slope[i] > 1 & slope[i] < 1.2) {
    stability[i] <- "high"
  } else if (slope[i] >= 1.2) {
    stability[i] <- "low"
  } else if (slope[i] >= -1 & slope[i] <= -0.8) {
    stability[i] <- "high"
  } else if (slope[i] >= -0.8 & slope[i] <= 0) {
    stability[i] <- "low"
  } else if (slope[i] < -1 & slope[i] > -1.2) {
    stability[i] <- "high"
  } else 
    stability[i] <- "low"
}
EN

回答 1

Stack Overflow用户

发布于 2017-07-08 08:05:44

如下所示修改您的代码:

代码语言:javascript
复制
    #slope <- (acc$y[i+1] - acc$y[i]) / (acc$x[i+1] - acc$x[i])
     stability <- as.vector(nrow(acc))       
    n <- nrow(acc)-1
    for (i in 1:n) {
      slope <- (acc$y[i+1] - acc$y[i]) / (acc$x[i+1] - acc$x[i])         

      if (slope > 0 && slope < 0.8) {
        stability[i] <- "low"
      } else if (slope >= 0.8 && slope <= 1) {
        stability[i] <- "high"
      } else if (slope > 1 && slope < 1.2) {
        stability[i] <- "high"
      } else if (slope >= 1.2) {
        stability[i] <- "low"
      } else if (slope >= -1 && slope <= -0.8) {
        stability[i] <- "high"
      } else if (slope >= -0.8 && slope <= 0) {
        stability[i] <- "low"
      } else if (slope < -1 && slope > -1.2) {
        stability[i] <- "high"
      } else
        stability[i] <- "low"
    }

Try it Online

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

https://stackoverflow.com/questions/44980505

复制
相关文章

相似问题

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