Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
放大滤波和函数以用于R中的循环_R_Function_For Loop_Data.table_Tidyverse - Fatal编程技术网

放大滤波和函数以用于R中的循环

放大滤波和函数以用于R中的循环,r,function,for-loop,data.table,tidyverse,R,Function,For Loop,Data.table,Tidyverse,这已经发生在我身上很多次了,我想找到一个更简单的方法来解决它 我正在创建一个函数,希望它在其中循环 假设我有以下专栏 id <- c(1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4, 4) year <- c(2000, 2002, 2004, 2000, 2002, 2004, 2000, 2002, 2004, 2000, 2002, 2004) pre.post <- c(0, 1, 1, 0, 1, 1, 0, 0, 0, 1, 1, 1) y

这已经发生在我身上很多次了,我想找到一个更简单的方法来解决它

我正在创建一个函数,希望它在其中循环

假设我有以下专栏

id <- c(1, 1, 1, 2, 2, 2,
3, 3, 3, 4, 4, 4)    
year <- c(2000, 2002, 2004, 
2000, 2002, 2004,
2000, 2002, 2004,
2000, 2002, 2004)
pre.post <- c(0, 1, 1, 0, 1, 1, 0, 0, 0, 1, 1, 1)
y <- c(100, 200, 200,
 400, 500, 600,
 700, 800, 300,
 200, 100, 200)

df <- data.frame (id, year, pre.post, y)
基本上,我希望R进入
年的每个值
,过滤掉那些滞后
pre.post
1
的值,然后运行该模型

我尝试了许多不同的for循环,例如:

  for(i in unique(df$year)) {
  year.df <-  filter(df[year == i, ], lag(pre.post) != 1)
  fixest::feols(y ~ pre.post| ags + year, data = year.df, panel.id = ~ags+year)
}

和其他类似的东西,但我从来没有得到我想要的东西。我认为,问题主要在于循环的过滤位。我还尝试创建自己的函数,这会更好,但我也没有得到它。非常感谢

你需要这样的东西吗

library(dplyr)

df %>%
  filter(lag(pre.post) != 1) %>%
  group_by(year) %>%
  summarise(test = list(feols(y ~ pre.post| id + year, data = cur_data_all(), 
                        panel.id = ~id+year))) -> result

是的,看起来不错。我想如果我每年都能扩大规模,那就行了。然而,当我只是按原样运行它时,它从fixeols函数“error:Problem with
summary()
input
test
.x数据中没有固定效应变量年”中给出了一个错误。这不是真的使用
cur\u data\u all()
而不是
cur\u data()
。哦,现在我得到了一个结果列表,谢谢!我不太清楚的问题是:filter命令是否分别为每个组运行?因为这就是我要找的
Error: object of type 'closure' is not subsettable
library(dplyr)

df %>%
  filter(lag(pre.post) != 1) %>%
  group_by(year) %>%
  summarise(test = list(feols(y ~ pre.post| id + year, data = cur_data_all(), 
                        panel.id = ~id+year))) -> result