无论如何,我可以遍历一组对象并对每个对象应用一个函数吗?

当我键入ls()objects()时,它将返回对象名称的列表。我想遍历此列表,找出data.frame,然后针对每个对象运行一个函数。

如何通过函数从lsobjects传递条目?

抱歉,这似乎是一个愚蠢的问题...

最佳答案

@jverzani给出的关于确定哪些对象是数据帧的答案是好的。因此,让我们开始吧。但是我们只想选择data.frames项。所以我们可以这样:

#test data
df <- data.frame(a=1:10, b=11:20)
df2 <- data.frame(a=2:4, b=4:6)
notDf <- 1

dfs <- ls()[sapply(mget(ls(), .GlobalEnv), is.data.frame)]


数据帧的名称现在是dfs对象中的字符串,因此您可以将它们传递给其他函数,如下所示:

sapply( dfs, function(x)  str( get( x ) ) )


我使用了get()命令实际上是通过名称来获取对象的(更多信息请参见R FAQ

我已经回答了您上面的问题,但是我怀疑如果您将数据帧组织到列表项中,您的代码将更具可读性且易于维护。显然,我不能肯定地说出来,但是我无法提出一个用例,其中遍历所有对象以查找数据框要比将数据框保留在列表中然后再调用该列表中的每个项目要好。

关于r - 遍历ls()或objects()?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5796508/

10-15 14:02