假设你在一个大的工作环境中工作,并且你不太适应你的环境变量,或者你有一些自动生成很多对象的进程。有没有一种方法可以扫描你的ls()
来识别所有具有给定类的对象?考虑下面这个简单的例子:
#Random objects in my environment
x <- rnorm(100)
y <- rnorm(100)
z <- rnorm(100)
#I estimate some linear models for fun.
lm1 <- lm(y ~ x)
lm2 <- lm(y ~ z)
lm3 <- lm(y ~ x + z)
#Is there a programmatic way to identify all objects in my environment
#that are of the "lm" class? Or really, any arbitrary class?
outList <- list(lm1, lm2, lm3)
#I want to look at a bunch of plots for all the lm objects in my environment.
lapply(outList, plot)
2条答案
按热度按时间bq3bfh9z1#
使用
class
函数:(正如@Gabor在评论中指出的那样,稍微修改了一下,以处理对象可以有多个类的情况)。
更新。为了完整起见,下面是@Gabor建议的一个改进。有时候我们可能只想得到X类的对象,而不想得到Y类的对象。或者其他一些组合。为此,可以编写一个包含所有类过滤逻辑的
ClassFilter()
函数,例如:然后你就得到了你想要的对象:
现在,您可以按照自己的意愿处理
Objs
。slsn1g292#
您可以将
Filter
与mget
中的inherits
和ls
一起使用,以获得命名的list
,在本例中为lm
对象。