我必须为数据框的每一行提取对应于至少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个值的其他方法
答案 0 :(得分:2)
order
函数将给出向量的排序。因此,其结果的第一个值对应于向量中最小值的索引。第二个是索引的第二个最小值等。在函数中使用它并使用apply
函数,我们可以将它应用于所有行。 apply函数的结果是列式的,您可能不想要,因此转置将取代结果。
first_10 <- function(x) order(x)[1:10]
t(apply(dat, 1, first_10))