在r中为我的函数编写一个循环

在r中为我的函数编写一个循环,r,loops,quantitative-finance,R,Loops,Quantitative Finance,我目前正试图为30个变量的滞后回归编写我的第一个循环。变量标记为rx1、rx2。。。。rx3,数据帧称为my_num_data 我创建了一个如下所示的循环: z <- zoo(my_num_data) for (i in 1:30) {dyn$lm(my_num_data$rx[i] ~ lag(my_num_data$rx[i], 1) + lag(my_num_data$rx[i], 2)) } z我对R不是很熟悉,但你似乎在试图增加rx的指数。rx是一个具有不同

我目前正试图为30个变量的滞后回归编写我的第一个循环。变量标记为rx1、rx2。。。。rx3,数据帧称为my_num_data

我创建了一个如下所示的循环:

z <- zoo(my_num_data)

for (i in 1:30)
{dyn$lm(my_num_data$rx[i] ~ lag(my_num_data$rx[i], 1) 
        + lag(my_num_data$rx[i], 2))
}

z我对R不是很熟悉,但你似乎在试图增加rx的指数。rx是一个具有不同指数值的向量吗?
如果不是,我的解决方案是连接字符串

for (i in 1:30){
varName <-- "rx"+i
dyn$lm(my_num_data$rx[i] ~ lag(my_num_data$rx[i], 1) 
        + lag(my_num_data$varName, 2))
}
for(i在1:30){

varName第一个问题,我很确定您要查找的函数是
dynlm()
,没有
$
字符。其次,使用
$rx[I]
不会连接
rx
I
的内容,而是选择(单个)带有索引的
i
$rx
中的元素。请尝试此…已编辑的我没有您的数据,因此无法在我的计算机上测试它:

results <- list()
for (i in 1:30) {
  results[[i]] <- dynlm(my_num_data[,i] ~ lag(my_num_data[,i], 1) 
    + lag(my_num_data[,i], 2))
}

results这将生成一个列表,
L
,其第i个组件具有
z
第i列的名称,其内容是
z
第i列在其前两个滞后上的回归。
Lag
Lag
相同,只是参数k的符号相反

library(dyn)
z <- zoo(anscombe) # test input using builtin data.frame anscombe

Lag <- function(x, k) lag(x, -k)
L <- lapply(as.list(z), function(x) dyn$lm(x ~ Lag(x, 1:2)))
库(dyn)

z嗨,克罗伯茨,谢谢你的帮助!我试图运行代码,但我收到另一条错误消息:“rx”中的错误:一元运算符的参数无效您的循环正在将
[I]
读取为变量“rx”的索引或行,而变量“rx”在R中通常被安排为列。我想您正在尝试使用
[I]
而是指示变量或列,如rx1。循环通常用于迭代变量的索引或行,但看起来您正在尝试迭代变量。不要使用循环迭代变量。使用循环迭代值(行或索引)这构成了每个变量。请回顾和。谢谢!!这太神奇了。只需重新应用它,没有for或list()需要:
results@Parfait谢谢!知道有一种方法可以将其构造为
lappy
调用,但在如何构造它上却一片空白。很棒的提示,总是在学习……另一个问题突然出现。我从一开始就试图运行整个代码,但从我在R中只运行这部分时起,我得到了不同的结果。没有任何变化在我的脚本中,除了这一部分。为什么会发生这种情况?嗯,这没有意义,除非您的
my_num_data
以某种方式更改。