2016-04-28 29 views
-4

我的全局环境中有200多个数据帧。我想从每个data.frame中删除第一行,但我不知道如何。R:从全局环境中的所有数据帧中删除一行

任何帮助将不胜感激请让我知道,如果需要进一步的信息。

+0

你怎么风与这样一个烂摊子评论?将这些数据框架保存在列表中而不是像这样污染你的全球环境可能会更好。用这种方式工作会更容易。 – MrFlick

+0

请参阅[如何创建数据框列表](http://stackoverflow.com/a/24376207/903061),以跟踪MrFlick的建议。 – Gregor

回答

2

这将列出您环境中的所有数据帧,从每个数据帧中删除第一行,并将它们组织到数据框列表中。一般来说,更好的做法是将它们放在列表中,这样您就可以更轻松地在它们之间使用它们并访问它们。

df <- lapply(ls(), function(x) get(x)[-1,])

更新:好主意,检查对象实际上的数据帧,只有那些工作。首先我们创建一个逻辑向量列表dataframes,然后将它们组合成一个列表并删除每个列表的第一行。

dfs = sapply(ls(), is.data.frame) 
lapply(mget(names(dfs)[dfs]), "[", -1, , drop = FALSE) 

感谢寻找我的错误,并提供更高效的解决方案

+2

你应该添加一个检查对象是一个数据帧http://stackoverflow.com/questions/35387419/how-to-rbind-all-the-data-frames-in-your-working-environment-in-r/35387595#35387595 – user20650