如何在单独选择每列而不是行号时保存行名?

时间:2017-03-12 04:26:36

标签: r dataframe sapply

我几天前问过这个问题,@ Juan Bosco帮助我并建议完美的代码并从每列中选择前n个值。但事实证明我需要每列所选行的名称,所以在列表中:" Selectedrows",我需要类似" t9"," t8" ," t7"而不是行号。

subView

由于

1 个答案:

答案 0 :(得分:4)

在这种情况下,您可以使用order,它返回可用于对数组进行排序的索引,order结果中的前三个元素对应于前3个值的索引如果指定数组减少;使用索引,您可以对names列进行子集化并获取相应的值:

lapply(2:3, function(col_index) {
    mydf[["names"]][order(mydf[[col_index]], decreasing = T)[1:3]]
})

#[[1]]
#[1] "t9" "t8" "t7"

#[[2]]
#[1] "t8" "t9" "t7"

请注意,假设您的名称列是字符,如果不是。如果您希望结果是字符而不是因素,请先mydf$names <- as.character(mydf$names)