查找与R中每行的最小值对应的列名

时间:2015-10-14 10:33:49

标签: r

我必须为数据框的每一行提取对应于至少10个值的列名,并将其打印在新数据框中。任何人都可以帮我这样做吗?

我的数据框如下所示:(15 x 15矩阵)

    > head(yt)
        V2   V3   V4   V5   V6   V7   V8   V9  V10  V11  V12  V13  V14  V15 
    1    0  966 1513 2964 1149  927 1611 1510  390  466 1820 1718  504 1179  
    2  966    0 2410 1520 1817  729  686  290 1823  168 2027  172 1610 1500 
    3 1513 2410    0  604  481 2742 1833  826  214 1618 1712  567  544 1313 
    4 2964 1520  604    0  595 1289 1446  466 1139  430  428  201  452 1574 
    5 1149 1817  481  595    0  494  550 2641  765  934 1813 1516  378 1363 
    6  927  729 2742 1289  494    0 1279 1197 2956  299  888  491 1408 1432

对于15行中的每一行,我想知道至少10列的列名

我知道which.min为每行提供了最少的列名,但是你可以让我知道计算至少10个值的其他方法

1 个答案:

答案 0 :(得分:2)

order函数将给出向量的排序。因此,其结果的第一个值对应于向量中最小值的索引。第二个是索引的第二个最小值等。在函数中使用它并使用apply函数,我们可以将它应用于所有行。 apply函数的结果是列式的,您可能不想要,因此转置将取代结果。

first_10 <- function(x) order(x)[1:10]
t(apply(dat, 1, first_10))