假设我有一个函数接受参数向量并返回结果向量(长度相同)。让我们说我想用相同的参数调用这个函数100次 - 一个100个元素长的向量1 - 理想情况下得到一个向量列表。
我想到的第一件事就是使用lapply,特别是在一个向量列表上调用lapply。我对较小数据的测试证明它应该工作并且它以所需格式返回数据。问题是我无法生成我需要的向量列表作为参数。
我在网上找到的只是如何生成一个对我没有帮助的载体,因为我已经知道如何做到这一点。问题是如何从这些向量中生成列表(using list(rep(1, 100), rep(1, 100), ...)
是不可能的,因为我必须重复rep(1, 100)
部分一百次。
答案 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
迫使它不要那么做。