# Create some objects
df <- data.frame(a=1:10)
dl <- list(a=1, b=2, c=3)
# Use `ls()` to return a list of object names
lso <- ls()
# Use `get()` to refer to specific objects
class(get(lso[1]))
[1] "data.frame"
# Using an apply function to evaluate the class
lapply(lso, function(x) class(get(x)))
[[1]]
[1] "data.frame"
[[2]]
[1] "list"
6条答案
按热度按时间lo8azlld1#
@jverzani给出的关于判断哪些对象是 Dataframe 的答案很好,所以让我们从这个开始,但是我们只想选择那些是data. frames的项目,所以我们可以这样做:
Dataframe 的名称现在是dfs对象中的字符串,因此您可以将它们传递给其他函数,如下所示:
我使用
get()
命令实际上按名称获取对象(有关详细信息,请参阅R FAQ)我已经回答了你上面的问题,但是我怀疑如果你把你的数据框组织成列表项,你的代码会更可读,更容易维护。显然我不能肯定地说这一点,但是我不能想出一个用例,在那里迭代通过所有对象寻找数据框上级把你的数据框保存在列表中,然后调用列表中的每一项。
inb24sb22#
您可以使用get或mget从对象的名称获取对象,然后使用其中一个apply类型函数进行迭代。
将告诉你全局环境中哪些项是 Dataframe 。要在函数中使用,你可以为ls调用指定一个环境。
xvw2m8pv3#
您可以使用“eapply”循环遍历环境中的对象。
fwzugrvs4#
使用
inherits
将另一个解决方案抛入混合。它基本上(a)从当前环境中获取所有对象,(b)检查它们是否继承自数据框。tkqqtvp15#
可以使用函数
get()
按名称引用对象0yycz8jy6#
您可以在
mget
中将Filter
与is.data.frame
和ls
一起使用,以获取命名列表(在本例中为data.frame
对象)。这个
list
然后可以例如在lapply
中使用,以将列表的每个元素应用于函数。