This is a short follow-up post on Colin Fay’s follow-up post on Thomas Lumley follow-up post on Miles McBain post about quotation. Yeah, I just cannot help it when I see this streak.
I’m not an expert of quotation or lazy evaluation. I just happen to have used them occasionally. I’m going to talk about two use cases of lazy evaluation.
Executing R code — the ninja way
In two of my talks, I used delayed assignments to execute R code for no good reasons except that I just wanted to confuse the audience. After making a delayed assignment like this in advance:
delayedAssign('command', {
# some R code
})
I can simply type command in the R console to actually execute the code. Of course, you could go with the normal way:
command = function() {
# some R code
}
command()
But that will be boring, right?
I used this trick in my talks at useR! 2014 and rstudio::conf 2018.
Lazy-loading the cache database in knitr
The caching system in knitr uses lazy-loading by default (the chunk option cache.lazy = TRUE). Lazy-loading means the results you cached will not be loaded in memory unless they are actually used later. This is very similar to the LazyData mentioned in Colin’s post. To those hackers, you may make a lazy-load database using the internal function tools:::makeLazyLoadDB() (again, it is an internal function, so no guarantee in the future), and load the database using lazyLoad().
I don’t quite remember how I discovered this. Chances are I found it by reading the source code of Roger Peng’s cacheSweave package in 2012.
Donate
As a freelancer (currently working as a contractor) and a dad of three kids, I truly appreciate your donation to support my writing and open-source software development! Your contribution helps me cope with financial uncertainty better, so I can spend more time on producing high-quality content and software. You can make a donation through methods below.
-
Venmo:
@yihui_xie, or Zelle:xie@yihui.name -
Paypal
-
If you have a Paypal account, you can follow the link https://paypal.me/YihuiXie or find me on Paypal via my email
xie@yihui.name. Please choose the payment type as “Family and Friends” (instead of “Goods and Services”) to avoid extra fees. -
If you don’t have Paypal, you may donate through this link via your debit or credit card. Paypal will charge a fee on my side.
-
-
Other ways:
WeChat Pay (微信支付:谢益辉) Alipay (支付宝:谢益辉) 

When sending money, please be sure to add a note “gift” or “donation” if possible, so it won’t be treated as my taxable income but a genuine gift. Needless to say, donation is completely voluntary and I appreciate any amount you can give.
Please feel free to email me if you prefer a different way to give. Thank you very much!
I’ll give back a significant portion of the donations to the open-source community and charities. For the record, I received about $30,000 in total (before tax) in 2024-25, and gave back about $15,000 (after tax).