【问题标题】:find column names corresponding to least value of each row in R查找与R中每行的最小值对应的列名
【发布时间】:2015-10-14 10:33:48
【问题描述】:

我必须为数据框的每一行提取与至少 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 个值的其他方法

【问题讨论】:

    标签: r


    【解决方案1】:

    order 函数将给出向量的排序。所以其结果的第一个值对应于向量中最小值的索引。第二个到第二小的索引等。在函数中使用它并使用apply 函数,我们可以将它应用于所有行。 apply 函数的结果是按列计算的,您可能不希望这样,因此转置会接管结果。

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

    【讨论】:

      猜你喜欢
      • 2021-07-17
      • 1970-01-01
      • 2014-07-23
      • 1970-01-01
      • 2015-07-07
      • 1970-01-01
      相关资源
      最近更新 更多