在 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))
}
但是我收到一条错误消息:
Error in model.frame.default(formula = dyn(my_num_data$rx[i] ~ lag(my_num_data$rx[i], :
invalid type (NULL) for variable 'my_num_data$rx[i]'
谁能告诉我循环有什么问题?
谢谢!
我对 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))
}
再一次,我可能离这里很远,因为如果我的第一个 post 和 R 对我来说还是很新的。
第一个问题,我很确定您要查找的函数是 dynlm()
,但没有 $
字符。其次,使用 $rx[i]
不会连接 rx
和 i
的内容,它会选择 $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 仅包含列 rx1
、rx2
等
这会生成一个列表,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)))
我目前正在尝试为 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))
}
但是我收到一条错误消息:
Error in model.frame.default(formula = dyn(my_num_data$rx[i] ~ lag(my_num_data$rx[i], : invalid type (NULL) for variable 'my_num_data$rx[i]'
谁能告诉我循环有什么问题?
谢谢!
我对 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))
}
再一次,我可能离这里很远,因为如果我的第一个 post 和 R 对我来说还是很新的。
第一个问题,我很确定您要查找的函数是 dynlm()
,但没有 $
字符。其次,使用 $rx[i]
不会连接 rx
和 i
的内容,它会选择 $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 仅包含列 rx1
、rx2
等
这会生成一个列表,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)))