我从环境中检索所有数据帧,然后做一些事情:
dfs <- Filter(function(x) is(x, "data.frame"), mget(ls()))
names(dfs)
"customers"
"sales"
"campaigns"
我需要提取的第一件事是循环内的对象名称:
for (df in dfs) {
df_name <- deparse(substitute(df))
# do some stuff
# do some more stuff
print(df_name)
}
但是,我得到的数据框名称是:
"df"
"df"
"df"
我也在循环中测试了一个函数:
find_name <- function(df) {
df_name_is <- substitute(df)
return(df_name_is)
}
但输出是:
df
df
df
循环遍历{d}的names
获取每个df的colnames
,而不是df名称本身。
任何提示都将非常感激
答案 0 :(得分:2)
如何迭代这些名字?!
for (df_name in names(dfs)) {
print(df_name)
df_obj <- dfs[[df_nmae]]
}
答案 1 :(得分:2)
如果你不介意使用循环计数器(长度)代替名称,这是一种有效的方法:
for (i in 1:length(dfs)) {
print(names(dfs)[i])
}