首页 > 解决方案 > 连续满足条件时如何更改后续行值?

问题描述

只是想知道是否有人知道如何在数据框中满足条件时让 R 更改所有未来的行值?

即假设数据列中有一个负值 - 我希望 R 测试该列的负值和该值以及后续行 0 中的值(无论负值后面的值是否为负)。

提前谢谢了!

标签: rdataframe

解决方案


这不是很优雅,但使用“经典”R 效果很好。如果 x 包含数值:

f <- function(x) {
  quel <- which(x < 0)[1]
  if(is.na(quel)) return(x)
  x[quel:length(x)] <- 0
  return(x)
}
apply(x, 2, f)

例子:

x <- as.data.frame(matrix(runif(100,-1,1), ncol=10))
print(x)
print(apply(x, 2, f))

推荐阅读