【发布时间】:2014-10-02 15:03:34
【问题描述】:
所以,this question 告诉我们如何在 R 中执行列表推导以过滤出新值。
我想知道,编写生成新值的列表理解的标准 R 方法是什么?
基本上,如果我们有一个函数f和向量x,我想要列表f(el) for el in x。 (这就像函数式编程中的地图)。
在 Python 中,这只是[f(el) for el in x]。我如何以标准方式在 R 中编写它?
问题是,现在我有 for 循环:
result = c(0)
for (i in 1:length(x))
{
result[i] = f(x[i])
}
是否有更类似于 R 的方式来编写此代码,以避免 for 循环的开销?
【问题讨论】:
-
您正在寻找
lapply或sapply。 -
f也有可能对向量输入进行操作;x = 1:10; sapply(x, function(X) X + 2); x + 2。顺便说一句,您的“结果”也可以使用已知大小进行初始化:rep(0, length(x))
标签: r performance list-comprehension vectorization idioms