(II) : Tryb call

Obiekty trybu call są nieocenionymi funkcjami z argumentami, jeśli funkcja przyjmuje argumenty. Te same trzy funkcje, które istnieją dla trybów atomowych, istnieją dla trybu wywołania: call(), as.call() i is.call().

Funkcja call() tworzy obiekt wywołania trybu. Pierwszy argument call () to nazwa funkcji w cudzysłowie. Pozostałe argumenty do wywołania to argumenty funkcji. Niektóre przykłady obejmują:

> a.call = call(“lm”, y~x)

> a.call

lm(y ~ x)

> b.call = call(“ls”)

> b.call

ls()

> c.call = call(“ls”, pattern=”abc”)

> c.call

ls(pattern = “abc”)

Zauważ, że obiekt wywołania trybu może zostać oceniony za pomocą funkcji eval(). Jeśli wszystkie zmienne w wywołaniu istnieją w obszarze roboczym, eval() oceni funkcję; w przeciwnym razie eval() spowoduje błąd. Na przykład:

> x

[1] 1 2 3

> y

[1] 2 3 4

> eval(a.call)

Call:

lm(formula = y ~ x)

Coefficients:

(Intercept) x

1 1

> a.call = call(“lm”, z~x)

> z

Error: object ‘z’ not found

> eval(a.call)

Błąd w eval (expr, envir, encos): nie znaleziono obiektu „z”. Funkcja as.call () próbuje przekonać argument do obiektu wywołania trybu. Jeśli argumentem jest lista, następuje konwersja; w przeciwnym razie zwracany jest błąd. Jeśli jednak lista nie zawiera nazwy funkcji, po której następują argumenty tej funkcji, obiekt nie może zostać oceniony. Funkcja is.call () testuje argument i zwraca PRAWDA, jeśli argumentem jest wywołanie trybu, w przeciwnym wypadku FALSE. Więcej informacji na temat wywołania trybu można znaleźć, wprowadzając ?call w wierszu R.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *