【发布时间】:2010-11-26 13:59:18
【问题描述】:
我有两个向量,subject 和 target。我想根据两个现有向量之间的比较创建一个新向量,并比较元素lagged。我已经使用下面的循环解决了这个问题,但我基本上想知道使用apply 是否有更优雅的解决方案?
subject <- c(200, 195, 190, 185, 185, 185, 188, 189, 195, 200, 210, 210)
target <- c(subject[1], subject[1]-cumsum(rep(perweek, length(subject)-1)))
adjtarget <- target
for (i in 1:(length(subject)-1)) {
if (subject[i] > adjtarget[i]) {
adjtarget[i+1] <- adjtarget[i]
} else {
adjtarget[i+1] <- adjtarget[i]-perweek }
}
}
【问题讨论】:
-
每周变量的值是多少?
-
您好,抱歉忘记了这一点:每周只是任何整数。就我而言,它是每周
-
代码有点难理解。在循环中,分配在您将在下一次迭代中比较的位置更改
adjtarget。恐怕没有优雅的解决方案可以在 R 中表达这一点,您通常在其中并行处理整个向量。比较是一个移动的目标
标签: r