删除名称与模式匹配的多个数据框的行

Remove rows for multiple dataframes having a name matching a pattern

我正在尝试删除具有相同结构但名称不同(保持相似名称结构)的多个数据帧的前 9 行。在我的示例中,有 4 个数据框,分别具有名称 Mydataframe_A, Mydataframe_B, Mydataframe_C, Mydataframe_D.

目前它正在使用以下代码:

`Mydataframe_A`<- `Mydataframe_A`[-c(1:9),]
`Mydataframe_B`<- `Mydataframe_B`[-c(1:9),]
`Mydataframe_C`<- `Mydataframe_C`[-c(1:9),]
`Mydataframe_D`<- `Mydataframe_D`[-c(1:9),]

但我想只写一行,而不必每次都指定数据框的每个名称。

我认为这可以通过使用模式名称和列表来实现,因为例如这就是我正在做的绑定不同数据帧的工作:

All_mydataframes <- rbindlist(mget(ls(pattern = "^Mydataframe_")))

知道怎么做吗?

非常感谢!

由于 mget 将其转换为列表,您可以使用 apply 系列函数:

rbindlist(lapply(mget(ls(pattern = "^Mydataframe_")), function(x) x[-c(1:9), ]))

这从 mget 中取出 list 并删除前 9 行,然后 rbind 从列表中删除到 data.table。唯一的问题是您无法区分 data.frame 原始数据的一部分。