4

動作する 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>

}

関数パラメーターとして 2 つの銘柄記号を渡す場合、それらを引用符で囲む必要があります。

teetor("GLD", "GDX")

簡単に入力できるようにしたい:

teetor(GLD, GDX)
4

3 に答える 3

13

しないでください。いくつかのキーストロークを節約するためだけに、明確で単純なコードを犠牲にするのは悪い考えです。対話的にのみ使用でき、別の関数から呼び出されない関数を作成しました。

于 2011-02-16T01:56:56.217 に答える
8

これを行うにはいくつかの方法がありますが、一般的にはお勧めしません。

通常、そのような引用符なしで何かを呼び出すことは、オブジェクト自体が検索パスにあることを意味します。割り当てずにこれを行う 1 つの方法は、with()関数を使用することです。

次のようにして、実際に存在することなく何かの名前を取得できますdeparse(substitute(...))

> blah <- function(a) {
    deparse(substitute(a))
  }
> blah(foo) 
[1] "foo"
> foo 
Error: object 'foo' not found

したがって、原則として、名前を渡す代わりに deparse(substitute(...))、関数で上記の例のように使用して名前を取得できます。teetor

于 2011-02-16T00:58:37.467 に答える
4

さて、1つの解決策は次のとおりだと思います。

GLD <- "GLD"
GDX <- "GDX"
teetor(GLD,GDX)     # No need to quote GLD and GDX

考え直して、気にしないでください。

于 2011-02-19T20:31:12.093 に答える