我可以得到如下方式的内容和传递data.frame到函数的名称:得到函数变量的名称,无论是否直接或通过*通过的申请
my.func1 <- function(dframe, ...){
content <- dframe
name <- deparse(substitute(dframe))
name
}
> my.func1(mtcars)
[1] "mtcars"
我有数据列表.frames,我需要从这个列表中为每个data.frame调用这个函数。有几种可能的方式做到这一点,我在以前question提到的,如:
> 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)))
> lapply(names(LoDFs), function(x) { x })
[[1]]
[1] "first"
[[2]]
[1] "second"
这一个是工作,因为我传递的名称,直接发挥作用,当我想访问的data.frame里面的内容功能我可以使用LoDFs[[x]]
。我可以编写一种类型的函数,无论是直接传递(第1个例子)还是使用列表中的lapply
(第2个例子),都可以获取data.frame的名称?
PS:我在想是否可以以某种方式确定“父”功能,如果这个父母是*apply
,那么我将处理它不同,但我不知道这是否是正确的方法。
编辑在回答G.格罗腾迪克
好了,我已经使用mapply
重写调用它从列表中每个data.frame的my.func1
到
my.func1 <- function(dframe.val, dframe.name, ...){
value <- dframe.val
name <- dframe.name
name
}
例子:
mapply(my.func1, LoDFs, names(LoDFs))
直接调用它的示例:
my.func1(mtcars, as.character(substitute(mtcars)))
这是一个参数,但似乎它工作(我不是100%确定as.character(substitute(mtcars))
是正确的方式)。
非常感谢你,这说明对我来说很有趣的语言内部,我打算尽快学习。 –