繁体   English   中英

高效地基于R中的另一个列表创建列表

[英]efficient create a list based on another list in R

尽管我知道如何在Python和Java中执行此操作,但并不熟悉如何在R中实现此功能。尤其是我知道R在循环中非常慢,并且动态增长列表很慢。

假设我有一个vector(list)a <-c(1,3,4),我想拥有一个由以下规则的元素组成的列表b,来自a的任何元素k包括3*k-2:3*k列表中的3*k-2:3*k b。

e.g,   
1 =>  1,2,3
3 =>  7,8,9
4 =>  10,11,12
so b <- c(1,2,3,7,8,9,10,11,12)

现在更普遍的是,如果我有一个rule(function)f(k),如何将返回值附加到新列表中?

谢谢

您想要类似的东西:

> unlist(lapply(c(1,3,4), function(k) (3*k-2):(3*k)))
[1]  1  2  3  7  8  9 10 11 12

但是,我没有按照您的要求提供更通用的解决方案。

这是多样化的另一种方式。

as.vector(mapply(`:`, 3*a-2, 3*a))
# [1]  1  2  3  7  8  9 10 11 12

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM