因此,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循环的开销?
答案 0 :(得分:3)
我建议看看R包rlist,它提供了许多实用程序功能,可以很容易地使用列表。例如,你可以写
list.map(x, x ~ x + f(x))
答案 1 :(得分:2)
以下作品没有任何特殊功能:
> x <- 1:10
> f <- function(x) {x+log(x)}
>
> f(x)
[1] 1.000000 2.693147 4.098612 5.386294 6.609438 7.791759 8.945910 10.079442 11.197225 12.302585
> result = f(x)
> result
[1] 1.000000 2.693147 4.098612 5.386294 6.609438 7.791759 8.945910 10.079442 11.197225 12.302585
如果x是向量,则f(x)的结果将是向量。
> y = 12
> f(y)
[1] 14.48491