为什么R评估子集化的NULL?

时间:2018-04-24 17:23:16

标签: r null subset

AFAIK,任何NULL的子集,例如R中的NULL[1]都将再次返回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
    )

其中函数的任何参数(arg)都可以为NULL。

它可以节省大量的运行时间,而不是评估复杂的计算,但我认为我无法通过在列表创建中测试if (is.null(arg))来绕过评估。惰性评估不适用于此吗?还有其他解决方案可以避免评估吗?

0 个答案:

没有答案