如何从使用lapply传递给函数的列表中获取data.frame的名称

Wak*_*nka 5 evaluation r lapply dataframe

我有功能,我想扩展能够将结果保存到csv文件.应根据传递给此函数的data.frame名称生成csv文件的名称:

my.func1 <- function(dframe, ...){
  # PART OF CODE RESPONSIBLE FOR COMPUTATION
  # ...

  # PART OF CODE WHERE I WANT TO STORE RESULTS AS CSV
  csv <- deparse(substitute(dframe))
  csv
}
Run Code Online (Sandbox Code Playgroud)

当我按照以下方式调用此函数时,将正确解释传递给此函数的数据集的名称:

> my.func1(mtcars)
[1] "mtcars"
Run Code Online (Sandbox Code Playgroud)

但我需要从列表中为每个data.frame调用此函数.如果我从列表中为特定的data.frame调用此函数,那么它基本上正在工作(我得到了包含列表名称的丑陋名称,但是一个解决方法可以使用正则表达式修剪它):

> LoDFs <- list(first=data.frame(y1=c(1,2,3), y2=c(4,5,6)), second=data.frame(yA=c(1,2,3), yB=c(4,5,6)))
> my.func1(LoDFs$first)
[1] "LoDFs$first"
Run Code Online (Sandbox Code Playgroud)

问题是我想从列表中为所有data.frames调用此函数.在这种情况下,data.frame的名称是混乱的:

> lapply(LoDFs, my.func1)
$first
[1] "X[[i]]"

$second
[1] "X[[i]]"

> lapply(seq_along(LoDFs), function(x) { my.func1(LoDFs[[x]]) })
[[1]]
[1] "LoDFs[[x]]"

[[2]]
[1] "LoDFs[[x]]"
Run Code Online (Sandbox Code Playgroud)

我做错了什么,如何避免使用正则表达式提及的解决方法并使代码更健壮?

Car*_*eri 3

f 列表中的每个数据框都被命名

lapply (names (LoDf),function(i)write.csv (my.fun1 (LoDf [[i]]),paste0 (i,'.csv')))
Run Code Online (Sandbox Code Playgroud)

在电话中,请原谅小错误