почему сжатие deparse (substitute ()) в функцию ведет себя непоследовательно? - PullRequest
0 голосов
/ 29 апреля 2020

Я прошу прощения, что я только скромно знаком с соглашениями о форматировании, но я надеюсь, что это тем не менее читабельно.

Чтобы сохранить себя, печатая (и ошибки), я написал

depSub<-function(object) deparse(substitute(object)) # return name of object as string

Это кажется работает как положено

depSub (qq)

[1] "qq"

deparse (замещающий (qq))

[1] "qq"

Но внутри функции результат отличается

foo<-function(object){
  name1<-depSub(object)
    name2<-deparse(substitute(object))
    print(c("name1=",name1,"name2=",name2))
}

foo (qq)

[1] "name1 =" "object" "name2 =" "qq"

Любое освещение того, почему это происходит, будет высоко ценится

1 Ответ

0 голосов
/ 29 апреля 2020

Мы могли бы изменить deparse на quote и затем eval использовать его внутри foo

depSub<-function(object) quote(substitute(object))
foo<-function(object){
   name1 <- deparse(eval(depSub(object)))
    name2 <- deparse(substitute(object))
   print(c("name1=",name1,"name2=",name2))
}



foo(qq)
#[1] "name1=" "qq"     "name2=" "qq"    
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...