Как функция get по-разному оценивает аргумент с кавычками и без них '' - PullRequest
0 голосов
/ 28 апреля 2018

Я пытаюсь понять различные подводные камни при использовании assign () и get (). Один пример, в котором get () будет по-разному оценивать одни и те же объекты, показан ниже. Для начала я назначаю строку 'This is: ALPHABET' для элементов names.foo

names.foo <- letters
values.foo <- LETTERS
for (i in 1:length(names.foo)){
assign(names.foo[i], paste("This is: ", values.foo[i]))
}

И когда я запускаю get ('names.foo'), я получаю исходный вектор, как и ожидалось

get('names.foo')
[1] "a" "b" "c" "d" "e" "f" "g" "h" "i" "j" "k" "l" "m" "n" "o" "p" "q" "r" "s" "t" "u" "v" "w" "x" "y" "z"

Но когда я запускаю get (names.foo), ту же команду, что и выше, но без кавычек, я получаю то, что кажется значением, присвоенным первому элементу вектора names.foo в цикле for.

get(names.foo)
[1] "This is:  A"

Означает ли это, что первый элемент, который был назначен в цикле for, также имеет имя names.foo? Что именно get () делает по-разному в 2 случаях?

1 Ответ

0 голосов
/ 28 апреля 2018

Если вы посмотрите на соответствующие страницы справки, вы увидите, что get и assign предназначены для получения имени переменной, заданной в виде строки символов. Итак, команда

get('names.foo') 

правильно. Чтобы понять все тонкости этого, я бы порекомендовал прочитать Хадли Уикхэма Advanced R , доступный бесплатно здесь: http://adv -r.had.co.nz / , с особое внимание уделено главе, касающейся выражений.

...