首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在R循环中添加lag

在R循环中添加lag
EN

Stack Overflow用户
提问于 2020-07-02 18:34:02
回答 2查看 59关注 0票数 0

我一直试图在R循环中添加一个滞后,但一直没有太多的运气。我的数据的基本情况如下:

代码语言:javascript
复制
N1<-1
R1<-1

N1<-(R1-3)
R2<-R1*2 #note this is different from other Rx<-... 
N2<-(R2-3)
R3<-(R2-R1)*2
N3<-(R3-3)
R4<-(R3-R2)*2
N4<-(R4-3)
R5<-(R4-R3)*2
N4<-(R4-3)
R5<-(R4-R3)*2
N4<-(R4-3)
R5<-(R4-R3)*2
etc.. to R10
print(R10)

我可以像这样把它变成一个循环来简化它:

代码语言:javascript
复制
N1<-1
R1<-1

N1<-(R1-3)
R2<-R1*2

n<-N1
r<-R2
for(i in 1:8) n<-(r-3)
r<-(r-("r-1"))*2
print(r)

然而," r -1“短语(概念上意味着r的前一次迭代,而不是字面上的r减去整数1)不起作用,因为r被循环的每次迭代覆盖。关于如何做到这一点的想法?到目前为止,我读到的Lag函数似乎需要一个数据帧,因为这是一个模型,我没有。我也不确定是否只有一些术语来表示"r-1",或者甚至滞后,我遗漏了它。任何帮助都将不胜感激

EN

回答 2

Stack Overflow用户

发布于 2020-07-02 19:05:34

这可能是你想要的吗:

代码语言:javascript
复制
n = 10
R <- c(1,2, rep(NA, times = n - 2))

for (i in 3:n) R[i] <- (R[i-1] + R[i-2]) * 2

R
[1]    1    2    6   16   44  120  328  896 2448 6688

N <- lag(R, 3)
[1]  NA  NA  NA   1   2   6  16  44 120 328

我认为这里的关键是要理解R中“没有标量”。基本上,一切都是一个向量。R[1]访问向量的第一个值,R[2]访问第二个值,依此类推。

票数 1
EN

Stack Overflow用户

发布于 2020-07-03 19:26:56

一位朋友帮我找到了这个对我来说最简单的解决方案:

代码语言:javascript
复制
N1<-1
R1<-1

N1<-(R1-3)
R2<-R1*2

n<-N1
r_prev<-R1    
r_current<-R2
for(i in 1:8) n<-(r_current-3)
r_temp<-r_current
r_current<-(r_current-r_prev)*2
r_prev<-r_temp 

print(r)

对于像我这样的初学者来说,可能不是最整洁的,但更简单一点!

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62694354

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档