以下是R函数的前几行:
teetor <- function(x,y) {
require("quantmod")
require("tseries")
alpha <- getSymbols(x, auto.assign=FALSE)
bravo <- getSymbols(y, auto.assign=FALSE)
t <- as.data.frame(merge(alpha, bravo))
# ... <boring unit root econometric code>
}
当我将两个股票代码作为函数参数传递时,我需要用引号括起它们:
teetor("GLD", "GDX")
我希望能够简单地输入:
teetor(GLD, GDX)
答案 0 :(得分:12)
别。牺牲清晰,简单的代码只是为了节省几次击键是一个坏主意。您已经创建了一个只能以交互方式使用的函数,而不是从另一个函数调用的函数。
答案 1 :(得分:7)
有几种方法可以做到这一点,但通常我不会建议。
通常调用不带引号的东西意味着对象本身位于搜索路径中。在不指定的情况下执行此操作的一种方法是使用with()
函数。
您可以通过deparse(substitute(...))
> blah <- function(a) {
deparse(substitute(a))
}
> blah(foo)
[1] "foo"
> foo
Error: object 'foo' not found
因此,原则上您可以使用deparse(substitute(...))
获取名称,如上例中的teetor
函数中所示,而不是传递名称。
答案 2 :(得分:4)
好吧,我想有一个解决方案是:
GLD <- "GLD"
GDX <- "GDX"
teetor(GLD,GDX) # No need to quote GLD and GDX
第二个想法,没关系。