r - 返回R中行中三个最高值的函数

标签 r function dataframe max row

我有两组数据框,我正在尝试创建一个函数,它将数据框和行名称作为参数,并返回行中的三个最高值(按降序排列)和三个最高值的列。


    set.seed(0)
    df <- data.frame(A=c(3,2,1,4,5),B=c(1,6,3,8,4),C=c(2,1,4,8,9), D=c(4,1,2,4,6))
    row.names(df)<-c("R1","R2","R3","R4","R5")

    df2 <- data.frame(E=c(2,5,6,1,4),F=c(2,4,2,5,1),G=c(5,6,2,7,3),H=c(8,2,7,4,1))
    row.names(df2)<-c("R6","R7","R8","R9","R10")

    print(df)

       A B C D
    R1 3 1 2 4
    R2 2 6 1 1
    R3 1 3 4 2
    R4 4 8 8 4
    R5 5 4 9 6

    print(df2)

        E F G H
    R6  2 2 5 8
    R7  5 4 6 2
    R8  6 2 2 7
    R9  1 5 7 4
    R10 4 1 3 1

这是一个结果示例:

设函数为maxthree。现在


    maxthree(df2, "R7")

    G E F
    6 5 4

这是我到目前为止所做的:


    maxthree <- function(data,row) {
      if(!row %in% rownames(data)) {
        print("Check value")
      } else { 
        max_col <- which.max(data[row,])
        print(max_col)
      }
    }

此函数现在将返回该行中的最大值以及列名。但是,我现在不知道如何将第二个和第三个最高值添加到函数中。

最佳答案

maxthree = function(data, row) {
  data[row, order(unlist(data[row, ]), decreasing = TRUE)[1:3]]
}

maxthree(df2, "R7")
#    G E F
# R7 6 5 4

结果是一个 1x3 的数据框。

关于r - 返回R中行中三个最高值的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61756889/

相关文章:

r - 在 R 中使用 mRMRe

r - 按多列分组并对其他多列求和

r - 是否可以将两个时间序列合并为一个?

javascript - 我什么时候会使用这种函数声明?

javascript - 通过返回 false 来阻止链接打开 - 不起作用 (javascript)

r - pretty-print 数据框时如何增加列之间的空间?

R乘法矩阵: but with a special function

c++ - 如何在 C++ 中定义全局函数?

python - 隔离特定列中具有相同值的数据帧行的有效方法是什么?

python - Pandas 迭代地追加来自多个 DataFrame 列的行值