R writing style - require vs. ::

后端 未结 2 1998
没有蜡笔的小新
没有蜡笔的小新 2020-12-31 01:40

OK, we\'re all familiar with double colon operator in R. Whenever I\'m about to write some function, I use require(), but I was always thinking a

2条回答
  •  情书的邮戳
    2020-12-31 02:25

    "Why should one prefer require over :: when writing a function?"

    I usually prefer require due to the nice TRUE/FALSE return value that lets me deal with the possibility of the package not being available up front before getting into the code. Crash as early as possible instead of halfway through your analysis.

    I only use :: when I need to make sure I am using the correct version of a function, not a version from some other package that is masking the name.

    On the other hand, :: operator gets the variable from the package, while require loads whole package (at least I hope so), so speed differences came first to my mind. :: must be faster than require.

    I think you may be ignoring the effects of lazy loading which is used by the foreign package according to the first page of its manual. Essentially, packages that use lazy loading defer the loading of objects, such as functions, until the objects are called upon for the first time. So your argument that ":: must be faster than require" is not necessarily true as foreign is not loading all of its contents into memory when you attach it with require. For full details on lazy loading, see Prof. Ripley's article in RNews, Volume 4, Issue 2.

提交回复
热议问题