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

标签 r dataframe lapply evaluation

我有我想扩展的功能,能够将结果保存到 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
}

当我按照以下方式调用此函数时,传递给此函数的数据集名称将被正确解释:
> my.func1(mtcars)
[1] "mtcars"

但是我需要为列表中的每个 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"

问题是当我想为列表中的所有 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]]"

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

最佳答案

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

lapply (names (LoDf),function(i)write.csv (my.fun1 (LoDf [[i]]),paste0 (i,'.csv')))

在电话上所以请原谅小错误

关于r - 如何使用lapply从传递给函数的列表中获取data.frame的名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36320460/

相关文章:

r - Windows 上的 R 包检查问题 : package suggested but not available: 'stringi'

r - Xaringan:数学在脚注类中呈现为内联代码

在 R 中读取固定宽度格式的文件

python - 将缺失值保留为 'NaN' 的 LabelEncoder

r - 在for循环中删除一行又一行

r - 将 mutate(across(...)) 与 purrr::map 结合使用

python - 根据文本版本控制删除重复项

r - 根据条件计算平均值

r - 在改变参数的情况下使用lapply

根据字典中的单词值检索句子分数