Я думаю, это связано с тем, что в R. встроена более старая обработка возврата. Существует много функций возврата, withVisible
, invisible
и т. Д. Когда вы возвращаете присваивание x<-null
внутри функции возврата, оно не будет автоматически печататься , Если вы хотите назначить печать ...
test <- function() {
withAutoprint(x<-NULL)
}
# with printout this time
test()
# with printout
test()
# with printout
test()
Я думаю, что это просто может быть жестко закодировано в функции возврата, может быть, что-то вытянуто из этой логики ниже, просто выстрел в темноте.
Source: R Documentation
x <- 1
withVisible(x <- 1) # *$visible is FALSE
x
withVisible(x) # *$visible is TRUE
Опять же, если мы не используем выражение и просто возвращаем переменную или значение внутри нашей функции возврата, мы получаем автоматическую печать. Причина, по которой я предполагаю, что он возвращается при втором вызове, связана с тем фактом, что x уже был назначен ранее.
РЕДАКТИРОВАТЬ: Я нашел это глубоко в документации по автоматической печати. "Печатается ли возвращаемое значение выражения R верхнего уровня, управляется глобальной логической переменной R_Visible. Это значение устанавливается в значение true или false при входе во все примитивные и внутренние функции на основе столбца eval таблица в файле src / main / names.c: соответствующий параметр можно извлечь с помощью макроса PRIMPRINT. " ( Источник )