gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 10:34:01 27 4
gpt4 key购买 nike

我有两个向量,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/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com