通过动态选择名称来组合多个数据框

时间:2018-10-11 18:53:47

标签: r

我收到了一个生成一堆对象的脚本。我想使用bind_rows合并多个数据框。我可以使用grep选择正确的对象,但无法将这些对象名称作为参数传递给bind_rows。

例如,我想选择以jar { manifest { attributes 'Main-Class': `mainClassName` } from { configurations.compile.collect { it.isDirectory() ? it : zipTree(it) } configurations.runTimeJars.collect { it.isDirectory() ? it : zipTree(it) } } } 开头的对象,并将其传递给bind_rows。在下面的示例中,我希望有一个名为df的数据帧,该数据帧具有data的数据帧3次。

mtcars

1 个答案:

答案 0 :(得分:0)

使用mget的建议是有意义的,尽管它返回一个列表,所以您将需要使用do.call来执行`rbind操作。

str( do.call( rbind, mget(ls( patt="^df.") ) )  )
'data.frame':   96 obs. of  11 variables:
 $ mpg : num  21 21 22.8 21.4 18.7 18.1 14.3 24.4 22.8 19.2 ...
 $ cyl : num  6 6 4 6 8 6 8 4 4 6 ...
 $ disp: num  160 160 108 258 360 ...
 $ hp  : num  110 110 93 110 175 105 245 62 95 123 ...
 $ drat: num  3.9 3.9 3.85 3.08 3.15 2.76 3.21 3.69 3.92 3.92 ...
 $ wt  : num  2.62 2.88 2.32 3.21 3.44 ...
 $ qsec: num  16.5 17 18.6 19.4 17 ...
 $ vs  : num  0 0 1 1 0 1 0 1 1 1 ...
 $ am  : num  1 1 1 0 0 0 0 0 0 0 ...
 $ gear: num  4 4 4 3 3 3 3 4 4 4 ...
 $ carb: num  4 4 1 1 2 1 4 2 2 4 ...

我认为使用mgetdo.call(而不是冒犯像我这样的被称为R纯粹主义者的人的机会较小。我选择对{{1 }}比起先获取所有工作空间名称,然后使用grep从中进行选择更为简洁。