将排序函数应用于R中的矩阵后向量的作用

时间:2012-10-26 03:01:03

标签: r

将排序应用于矩阵I的列后,向量s的作用是什么?

    n = 10
    I = c(2, 8)
    s = matrix(runif(n*20), nrow=20)
    M  = apply(s, 2, sort)[I,]

我们可以用另一种方法编写这段代码吗?

1 个答案:

答案 0 :(得分:3)

R的幂是索引向量或数组,而不是单个值,而是向量。假设以下示例:

foo = 5:10 # foo = 5 6 7 8 9 10
foo[3]     # 7
foo[1:3]   # 5 6 7
foo[-2]    # excluding the 2nd item -> 5 7 8 9 10

现在在阵列上:

bar = data.frame(1:3, 4:6)
bar[,2]                    # The 2nd column: 4 5 6
bar[-1,]                   # Excluding the first row
bar[c(2,3),]               # Extracts the second and third rows 

在原始示例中,apply(s, 2, sort)对矩阵s的每一列进行排序(如果您使用apply(s, 1, sort)它会对行进行排序),然后[I,]限制结果上一个命令只到第2行和第8行。因此,在此程序之后,s的每列中只有第2和第8个最小项。

请注意,I在R中可能有不同的含义。在您的情况下,它只是一个变量名称,它可能是其他任何名称。但是I(x)也是R中的一个函数。有关详细信息,您可以使用?I