繁体   English   中英

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

[英]Write a loop for my function in r

我目前正在尝试针对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))
}

但是我收到一条错误消息:

model.frame.default(formula = dyn(my_num_data $ rx [i]〜lag(my_num_data $ rx [i]):变量'my_num_data $ rx [i]'的类型无效(NULL))中的错误

谁能告诉我循环的问题是什么?

谢谢!

这将产生一个列表L ,其第i个成分的名称为z的第ith列的名称,其内容为z的第i个列在前两个滞后的回归。 Laglag相同,只是参数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)))

我对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))
}

再说一次,我可能离这里很远,因为如果我的第一篇文章和R对我来说仍然很陌生。

第一个问题,我很确定您要寻找的函数是dynlm() ,没有$字符。 其次,使用$rx[i]不会连接rxi的内容,而是选择$rx具有索引i的(单个)元素。 尝试一下...已编辑,因为我没有您的数据,所以无法在我的机器上对其进行测试:

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[[1]]将是第一次回归的结果,依此类推。

注意,这里假设你的my_num_data data.frame只包含列的rx1rx2等。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM