在R中编写修改数据帧列表的函数时遇到问题

在R中编写修改数据帧列表的函数时遇到问题,r,R,我有一个数据框列表(“年份”),其中每个数据框按年份命名: type_of(years) [1] "list" names(years) [1] "2008" "2009" "2010" "2011" "2012" "2013" "2013a" "2014" "2015" &quo

我有一个数据框列表(“年份”),其中每个数据框按年份命名:

type_of(years)
[1] "list"
names(years)
[1] "2008"  "2009"  "2010"  "2011"  "2012"  "2013"  "2013a"  "2014"  "2015"  "2015a"  "2016" 
我一直在尝试编写一个函数,该函数将列表作为参数,获取名称以“a”(代表“附录”)结尾的所有数据帧,然后查找数据帧的匹配年份(因此“2013a”匹配“2013”)。然后,该函数将在匹配的年份数据框上执行附录的半联接,并返回仅包含未更改和组合数据框的列表

#desired result
names(years)
[1] "2008"  "2009"  "2010"  "2011"  "2012"  "2013"  "2014"  "2015"  "2016"
我尝试了几次迭代,但都没有成功。下面是我尝试的最新函数及其生成的错误消息

MergeAddA <- function(lst) {

#finds data frames with addendum  
adds <-grep("\\d{4}a+", objects(lst), value = FALSE)   

  #finds match for addendum and joins data frames
  for (add in adds) {
  
    add <- lst[[add]]
    
    add_to <- grep(gsub("a", "", add), objects(lst), value = FALSE, fixed = TRUE)
    
    add_to <- lst[[add_to]]
    
    semi_join(add_to, add, by = c("case_number", "job_order_number"))
  }
return(lst)
}

years  %>% MergeAddA()
Error during wrapup: attempt to select less than one element in get1index
Error: no more error handlers available (recursive errors?); invoking 'abort' restart

MergeAddA我想这会对你有所帮助。
不过,如果您可以共享一些样本数据,以便我们检查结果,那就更好了

MergeAddA