в R, в чем разница между get(abc) и eval(parse(text=abc))

Я хотел бы знать разницу между этими двумя операциями; в этом примере кажется, что они работают одинаково, но должны быть ситуации, когда один будет работать, а другой нет. Я просто не могу понять, когда это произойдет.

> a <- 298
> eval(parse(text = "a"))
[1] 298
> get("a")
[1] 298

заранее спасибо


person Jason V    schedule 14.03.2015    source источник


Ответы (1)


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

eval(parse(text = "x <- 1"))

Команда eval(parse(...)) оценит выражение во входных данных, а get просто вернет хранящееся в нем значение, в этом конкретном примере это не сработает. с get, потому что это выражение (а не переменная). Таким образом, eval(parse(...)) в основном используется для оценки выражений, которые вы создаете (с помощью вставки и т. д.) в своей программе.

person Mamoun Benghezal    schedule 14.03.2015
comment
И, конечно же, если вы поищите R Fortune() eval(parse, вы получите известную цитату :-) - person Carl Witthoft; 14.03.2015