在用户定义的函数中将变量名转换为字符串,该函数将变量作为参数

时间:2015-09-10 21:39:33

标签: r join merge user-defined-functions

我有两个数据框:dfplace1。它们有一个公共变量Datedf有一个变量Sites,其中包含各种地名,包括place1

我正在构建以下功能:

f <- function(site) {
    merge(subset(df1, Location == deparse(substitute(site))), site, by = 'Date')
}

参数site将采用类似格式为place1的数据框(例如place2place3等。)

运行

merge(subset(df1, Location == deparse(substitute(place1))), place1, by = 'Date')

很简单,按预期执行。

但是运行f(place1)会导致0行数据帧。我相信我已将问题缩小到deparse(substitute(place))部分,但无法弄清楚它有什么问题。奇怪的是,将替代函数f1定义为

f1 <- function(site){
    deparse(substitute(site))
}

并运行f1(place1)生成

[1] "place1"

正如所料。

非常感谢任何和所有帮助!

0 个答案:

没有答案