R中的排序和排序

时间:2015-05-05 03:38:37

标签: r function sorting vector

我目前正在参加一个介绍课,而且我遇到了一些困难:

  1. 创建一个函数,它接受一个数字V.Size和一个数字N的向量作为输入并输出一个大小为N的列表对象,其中每个列表成员是一个包含V.Size元素的向量,使得最大值在V.Size中,在第一个列表项的向量中,在第二个列表项的向量中的V.Sizeis中的第二大值,等等.V.Size的(N + 1)有序值应该在第一个列表的向量,V.Size的(N + 2)有序值应该在列表的第二个向量中,依此类推。
  2. 现在,这是我到目前为止所做的,我正在尝试制作示例代码:

    V.Size <- c(5,4,2,3,1)
    n <- 5
    Function <- c(V.Size, n)
    Function
    [1] 5 4 2 3 1 5
    
    sort(Function, decreasing=TRUE)
    [1] 5 5 4 3 2 1
    

    我遇到的问题是(N + 1),(N + 2)及其排序。

1 个答案:

答案 0 :(得分:0)

解决这个问题的第一步是为排序V.size中的每个元素创建一个列表位置的向量。这基本上是总长度V.size的向量(1,2,...,N,1,2,...,N,...)。您可以通过以下方式获得:

V.Size <- c(5,4,2,3,1)
n <- 2
rep(1:n, length.out=length(V.Size))
# [1] 1 2 1 2 1

现在,您可以使用split功能根据这些分配创建列表:

split(sort(V.Size, decreasing=TRUE), rep(1:n, length.out=length(V.Size)))
# $`1`
# [1] 5 3 1
# 
# $`2`
# [1] 4 2