使用reduce to left join从ls()获取名称的数组

0aydgbwb  于 11个月前  发布在  其他
关注(0)|答案(1)|浏览(93)

使用reduceleft_join来合并table_basetable_atable_b。方法A可以工作,但必须输入对象名称,有点无聊。方法B可以得到对象名称,但不能返回正确的结果,如何修复?谢谢!

library(tidyverse)
table_base <- data.frame(cat=c("a","b","c","d"))

table_a <- data.frame(cat=c("a","b"),
                      value=c(1,2))

table_b <- data.frame(cat=c("a","c","d"),
                      value=c(7,9,10))

# method A: ok, but have to input object name one by one in list

reduce(list(table_base,table_a,table_b),left_join,by='cat') 


# method B: can't work
reduce(list(mget(ls(pattern="^table"))),left_join,by='cat')

字符串

bejyjqdl

bejyjqdl1#

需要解决的两个问题

  1. mget已经返回了一个列表,所以您不再需要list()来 Package mget
    1.列表中的括号顺序很重要,如果你想获得相同的结果,你需要调整迭代left_join的括号顺序

代码(仅示例)

> reduce(mget(ls(pattern = "^table")[c(3, 1, 2)]), left_join, by = "cat")
  cat value.x value.y
1   a       1       7
2   b       2      NA
3   c      NA       9
4   d      NA      10

字符串

相关问题