查找每行的最大值并提取列名

Finding the maximum value for each row and extract column names

假设我们有以下矩阵,

x <- matrix(1:9, nrow = 3, dimnames = list(c("X","Y","Z"), c("A","B","C")))

我想做的是:

1- 找出每一行的最大值。对于这一部分,我将执行以下操作,

df <- apply(X=x, MARGIN=1, FUN=max)

2- 然后,我想提取最大值的列名并将它们放在值旁边。按照可重现的示例,三行将是“C”。

任何帮助都会很棒。

你可以使用apply喜欢

maxColumnNames <- apply(x,1,function(row) colnames(x)[which.max(row)])

由于您有一个数字矩阵,您不能将名称添加为额外的列(它会转换为字符矩阵)。 您可以选择 data.frame 并执行

resDf <- cbind(data.frame(x),data.frame(maxColumnNames = maxColumnNames))

导致

resDf
  A B C maxColumnNames
X 1 4 7              C
Y 2 5 8              C
Z 3 6 9              C