Почему существует разное поведение между символом присваивания «=» и «<-» в R? - PullRequest
3 голосов
/ 22 июня 2019

Я присваиваю значения в списке вывода функции, например:

nofun = function(sth){

something happening here

metrics = list(
metric1 = value1
metric2 <- value2 )

return(metrics)
}

Как только я запросил metrics, я заметил, что использование <- и = отличается: первые присваивают значение только переменной без имени (то есть "x1"= value1), тогда как вторая применяется также правильное имя (т.е. metric1 = value1).

Это поведение цитируется также для data.frame в нижней части старого более общего вопроса , но нет никакого объяснения этого конкретного случая использования.

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

1 Ответ

2 голосов
/ 22 июня 2019

Для определения именованного списка у вас есть для использования синтаксиса list(name1 = value1, name2 = value2, ...). Элементы списка, определенные таким образом, имеют атрибут name, содержащий их имя.

Запись name2 <- value2 присваивает value2 переменной name2. Если вы напишите это внутри определения списка (list(name2 <- variable2)), переменная будет включена в список, но атрибут name не определен. Так что это эквивалентно:

name2 <- variable2
list(name2)

Вы можете сравнить оба утверждения:

attributes(list(a=3))
# $names
# [1] "a"
attributes(list(a<-3))
# NULL
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...