创建生成的向量列表
Create list of generated vectors
假设我有一个接受参数向量和 returns 结果向量(相同长度)的函数。假设我想始终使用相同的参数调用此函数 100 次 - 100 个元素的长向量 1 - 理想情况下得到一个向量列表。
我首先想到的是使用lapply,特别是在向量列表上调用lapply。我对较小数据的测试证明它应该可以工作,并且它 returns 所需格式的数据。问题是我无法生成我需要的向量列表作为参数。
我在网上找到的所有内容都是如何生成矢量,但对我帮助不大,因为我已经知道该怎么做。问题是如何从这些向量中生成列表 (using list(rep(1, 100), rep(1, 100), ...)
是不可能的,因为我必须重复 rep(1, 100)
部分一百次。
最快的方法是使用 R 的内置 replicate
函数,如下所示:
replicate(100, rep(1, 100), simplify = FALSE)
其中 rep(1, 100)
被替换为您实际想要 100 个副本列表的向量。等效语句是使用 lapply
和匿名函数,如下所示:
lapply(1:100, function(x){ rep(1, 100) })
本质上,这是在编写一个函数,该函数接受输入、丢弃输入并输出您选择的向量。事实上,根据文档,这与 replicate
在幕后所做的并没有太大区别:
replicate is a wrapper for the common use of sapply for repeated evaluation of an expression
与 replicate
标准用法的唯一区别是,默认情况下,replicate
returns 您的向量列表简化为数组。但是正如您所看到的,很容易通过传递 simplify = FALSE
.
来强制它不这样做
假设我有一个接受参数向量和 returns 结果向量(相同长度)的函数。假设我想始终使用相同的参数调用此函数 100 次 - 100 个元素的长向量 1 - 理想情况下得到一个向量列表。
我首先想到的是使用lapply,特别是在向量列表上调用lapply。我对较小数据的测试证明它应该可以工作,并且它 returns 所需格式的数据。问题是我无法生成我需要的向量列表作为参数。
我在网上找到的所有内容都是如何生成矢量,但对我帮助不大,因为我已经知道该怎么做。问题是如何从这些向量中生成列表 (using list(rep(1, 100), rep(1, 100), ...)
是不可能的,因为我必须重复 rep(1, 100)
部分一百次。
最快的方法是使用 R 的内置 replicate
函数,如下所示:
replicate(100, rep(1, 100), simplify = FALSE)
其中 rep(1, 100)
被替换为您实际想要 100 个副本列表的向量。等效语句是使用 lapply
和匿名函数,如下所示:
lapply(1:100, function(x){ rep(1, 100) })
本质上,这是在编写一个函数,该函数接受输入、丢弃输入并输出您选择的向量。事实上,根据文档,这与 replicate
在幕后所做的并没有太大区别:
replicate is a wrapper for the common use of sapply for repeated evaluation of an expression
与 replicate
标准用法的唯一区别是,默认情况下,replicate
returns 您的向量列表简化为数组。但是正如您所看到的,很容易通过传递 simplify = FALSE
.