2015-10-14 137 views
0

我必須爲每個數據幀的每行提取對應於至少10個值的列名稱,並將其打印在新的數據框中。任何人都可以幫助我做到這一點?找到與R中每行最小值對應的列名稱

我的數據幀看起來像這樣:(15×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個值

回答

2

order函數將給出一個向量的排序。所以其結果的第一個值對應於向量中最小值的索引。第二個到第二小的索引等。在函數中使用它並使用apply函數,我們可以將它應用於所有行。 apply函數的結果是列明智的,你可能不需要,所以轉置被接管了結果。

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

它解決了我的問題。謝謝edwin – alily

相關問題