【发布时间】:2012-03-09 06:10:13
【问题描述】:
R 的一个很好的特性与它固有的矢量化特性有关,它是第 2.2 节中An Introduction to R 中描述的回收规则。
出现在同一个表达式中的向量不必都具有相同的长度。如果不是,则表达式的值是一个与表达式中出现的最长向量具有相同长度的向量。表达式中较短的向量被回收尽可能频繁地(可能是部分地),直到它们与最长向量的长度相匹配。特别是简单地重复一个常数。
大多数标准函数都使用它,但这样做的代码隐藏在底层 C 代码中。
是否有一种规范的方法可以完全在 R 代码中实现函数的标准回收规则?也就是说,给定一个类似
的函数mock <- function(a, b, c) {
# turn a, b, and c into appropriate recycled versions
# do something with recycled a, b, and c in some appropriately vectorized way
}
其中a、b 和c 是向量,可能具有不同的长度和未知的类型/类别,是否有一种规范的方法来获取根据标准回收规则回收的一组新向量?特别是,我不能假设“做某事”步骤本身会进行适当的回收,所以我需要自己提前做。
【问题讨论】:
标签: r