从循环内的列表中获取数据框名称

时间:2017-02-14 14:39:48

标签: r

我从环境中检索所有数据帧,然后做一些事情:

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名称本身。

任何提示都将非常感激

2 个答案:

答案 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])

 }