r - 基于比较其他两个向量 "lagged"的元素的新向量?

标签 r

我有两个向量,subjecttarget。我想根据两个现有向量之间的比较创建一个新向量,比较元素 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 和与其进行比较之间的相互作用,并展示了一个类似的问题,我们在其中与常量 target 进行比较。然后可以将循环中的 if 更改为向量比较:

lv <- but.last(subject) > but.last(target)
ind <- which(lv)

准备结果向量(我称它为 x,因为它与你的 adjtarget 的结果不同)作为 的移位副本目标并将更改分配给它:

x <- c(target[1], but.last(target))  # corresponds to the true branch of the `if`
x[ind+1] <- target[ind] - perweek    # corresponds to the false branch

或者,

x <- c(target[1], but.last(target) - (!lv)*perweek

正如我所说,这并不能解决您的问题,但也许我们可以从这里开始。

关于r - 基于比较其他两个向量 "lagged"的元素的新向量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1395206/

相关文章:

ruby - 如何通过 RSRuby 将 ts 对象传递给 R

r - 如何在运行时向用户询问一个整数,如果没有得到则再次递归询问?

r - 在情节中使用普通文本与普通文本组合

function - R:外循环功能不起作用

r - R-Cran 中使用卡尔曼滤波器进行时间序列预测

r - 如何在 QCC Xbar 图表中显示日期

r - 在rstudio中复制粘贴时导致格式变化的原因是什么?

python - 如何从图案中打印不匹配的字母

r - 检查 R 包时出错,值为 `rchk`

r - 通过 id 变量计算滚动总和,缺少时间点