创建生成的矢量列表

时间:2016-01-29 22:07:54

标签: r vector generator

假设我有一个函数接受参数向量并返回结果向量(长度相同)。让我们说我想用相同的参数调用这个函数100次 - 一个100个元素长的向量1 - 理想情况下得到一个向量列表。

我想到的第一件事就是使用lapply,特别是在一个向量列表上调用lapply。我对较小数据的测试证明它应该工作并且它以所需格式返回数据。问题是我无法生成我需要的向量列表作为参数。

我在网上找到的只是如何生成一个对我没有帮助的载体,因为我已经知道如何做到这一点。问题是如何从这些向量中生成列表(using list(rep(1, 100), rep(1, 100), ...)是不可能的,因为我必须重复rep(1, 100)部分一百次。

1 个答案:

答案 0 :(得分:1)

最快的方法是使用R内置的replicate函数,如下所示:

replicate(100, rep(1, 100), simplify = FALSE)

其中rep(1, 100)被矢量替换为实际需要100个副本的列表。一个等效的陈述是使用lapply和一个匿名函数,如下所示:

lapply(1:100, function(x){ rep(1, 100) })

基本上,这样做的是编写一个函数,它接受输入,抛出它,然后输出你选择的向量。事实上,根据文档,这与replicate在幕后所做的事情没什么不同:

  

replicate是一个用于重复评估表达式的常用sapply的包装器

与标准使用replicate的唯一区别在于,默认情况下,replicate会将简化为矢量的矢量列表返回给数组。但正如你所看到的那样,通过传递simplify = FALSE迫使它不要那么做。