我正在处理一个数据框,它包含x和y列,值作为行。我想计算每2行x和y的斜率,然后使用计算出的斜率,记录斜率的“稳定性”是“高”还是“低”。看过代码后,您会更好地理解。这段代码有什么问题?当我输入稳定时,R返回NULL。
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"
}发布于 2017-07-08 08:05:44
如下所示修改您的代码:
#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
https://stackoverflow.com/questions/44980505
复制相似问题