Как я могу удалить кавычки вокруг параметров в функции R? - PullRequest
4 голосов
/ 16 февраля 2011

Вот несколько первых строк функции 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)

Ответы [ 3 ]

12 голосов
/ 16 февраля 2011

Не.Это плохая идея жертвовать ясным, простым кодом, просто чтобы сохранить пару нажатий клавиш.Вы создали функцию, которую можно использовать только в интерактивном режиме, а не из другой функции.

7 голосов
/ 16 февраля 2011

Есть несколько способов сделать это, но обычно я бы не советовал.

Обычно вызов чего-либо без кавычек означает, что сам объект находится в пути поиска. Один из способов сделать это без назначения - использовать функцию with().

Вы можете получить название чего-либо, не существуя на самом деле, deparse(substitute(...)):

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

Таким образом, в принципе вы можете получить имена, используя deparse(substitute(...)), как в приведенном выше примере в вашей функции teetor вместо передачи имен.

4 голосов
/ 19 февраля 2011

Ну, я полагаю, одно из решений:

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

Если подумать, неважно.

...