代码之家  ›  专栏  ›  技术社区  ›  Tom Wenseleers

Julia-等效于R的rep(),带有times参数

  •  3
  • Tom Wenseleers  · 技术社区  · 10 年前

    我正在寻找一种惯用而简洁的方式来实现我在R中的目标

    v1=1:5;v2=5:1;out=rep(v1,times=v2);out
    # 1 1 1 1 1 2 2 2 2 3 3 3 4 4 5
    

    i、 e.复制矢量中的每个元素 v1 v2 有什么想法吗?

    2 回复  |  直到 10 年前
        1
  •  2
  •   Chris Rackauckas    10 年前

    尝试使用 VectorizedRoutines.jl :

    # Pkg.clone("https://github.com/ChrisRackauckas/VectorizedRoutines.jl")
    # Will be Pkg.add("VectorizedRoutines") after being added to package system
    using VectorizedRoutines
    v1=1:5
    v2 = 5:-1:1
    R.rep(v1,each = v2)
    

    该实现基于RLEVectors。jl通过aireties的建议(稍微改进了打字,所以您不必收集)。

    这是我启动的一个包,用于将R/MATLAB/Python中的所有矢量化例程组合在一起,以便更容易将函数(和想法)移植到Julia。请随意打开Github存储库上的问题,以获得关于要实现的函数、在我应该了解的其他包中实现的函数的建议、与其他语言不匹配的语法,或者是否存在任何其他问题。如果您实现了这样的功能,也可以随时发出拉取请求。如果你需要帮助,不要害怕用基本功能提出拉请求,我可以帮你。

        2
  •  2
  •   Michael Ohlrogge    10 年前

    下面是一个使用数组综合的选项:

    v1 = 1:5;
    v2 = 5:-1:1;
    
    out = vcat([ [v1[idx] for n = 1:v2[idx]] for idx = 1:length(v1) ]...)
    

    rep() RLEVectors包中的函数:

    ## Pkg.add("RLEVectors")
    using RLEVectors
    out2 = rep(collect(v1), each = collect(v2))
    

    按现状, out2 collect(out2) .

    推荐文章