-3

I对矩阵列应用排序后向量的作用是什么s

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

我们可以用另一种更简单的方式编写这段代码吗?

4

1 回答 1

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.

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

于 2012-10-26T03:21:54.347 回答