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