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)
我做错了什么,如何避免使用正则表达式提及的解决方法并使代码更健壮?
f 列表中的每个数据框都被命名
lapply (names (LoDf),function(i)write.csv (my.fun1 (LoDf [[i]]),paste0 (i,'.csv')))
Run Code Online (Sandbox Code Playgroud)
在电话中,请原谅小错误
| 归档时间: |
|
| 查看次数: |
588 次 |
| 最近记录: |