Почему R оценивает подмножество NULL? - PullRequest
0 голосов
/ 24 апреля 2018

AFAIK, любое подмножество NULL, например NULL[1] в R, снова вернет NULL.Кажется, однако, что R все еще оценивает часть, используемую для поднабора:

system.time(NULL[1])
   user  system elapsed 
      0       0       0 
system.time(sample(1e7))
   user  system elapsed 
  0.582   0.010   0.598 
system.time(NULL[sample(1e7)])
   user  system elapsed 
  0.575   0.011   0.594

Я использую это в контексте создания списка внутри функции, как в

l <- list(
    var1 = arg1[eval of complex calculation 1]
    var2 = arg2[eval of complex calculation 2]
    ...etc
    )

, гделюбой из аргументов (аргумент) функции может быть NULL.

Это сэкономило бы много рабочего времени, не оценивая сложные вычисления, но я думаю, что не могу обойти оценку, проверяя if (is.null(arg)) при создании списка.Разве ленивая оценка здесь не применима?Есть ли другое решение, чтобы избежать оценки?

...