r语言 - 包含大量标题的bind_rows



我想使用dplyr中的bind_rows命令将大量的标题组合成一个标题。所有标题都有相同的列标题。我想避免在命令中键入所有标题的名称。这些标题的命名约定有一个明显的模式。下面是长文:

all <- distinct(bind_rows(
level1_1, level1_2, level1_3, level1_4, level1_5, level1_6, level1_7, level1_8,
level2_2, level2_3, level2_4, level2_5, level2_6, level2_7, level2_8,
level3_3, level3_4, level3_5, level3_6, level3_7, level3_8,
level4_4, level4_5, level4_6, level4_7, level4_8,
level5_5, level5_6, level5_7, level5_8,
level6_6, level6_7, level6_8,
level7_7, level7_8,
level8_8))

我想知道是否有更紧凑的方式来写这个命令?

通过指定pattern

,可以从ls返回的字符串对象名称中获得具有mgetlist对象的值。
library(dplyr)
out <- distinct(bind_rows(mget(ls(pattern = '^level\d+_\d+$'))))

pattern建议检查全局环境中的对象是否以'level'开头(^),后跟一个或多个数字(\d+),然后是下划线和一个或多个数字(_\d+),直到字符串的末尾($)


如果有其他类似的对象,想用特定的对象名称约束它,创建expand.gridpaste的组合

nm1 <- with(subset(expand.grid(1:8, 1:8), Var1 >= Var2), 
paste0("level", Var2, "_", Var1))
distinct(bind_rows(mget(nm1)))

最新更新