我需要你的帮助,我有一个这样的数据框

int x  y  z
1   0  1  0
2   1  0  0
3   0  0  1

而我需要的结果一定是这样的
int letter

1    y
2    x
3    z

我的代码是:
for (i in 1:nrow(samples))
    for(j in 1:ncol(samples))
        if(samples[i,][,j] == 1) print(c(i,names(samples[i,j])))

但它没有显示第二列,我需要保存在一个新的 data.frame 中,有什么建议吗?谢谢。

最佳答案

我相信有很多方法,但这里有一个:

samples <- read.table(text="int x  y  z
1   0  1  0
2   1  0  0
3   0  0  1",
header=TRUE)

#  int x y z
#1   1 0 1 0
#2   2 1 0 0
#3   3 0 0 1

data.frame(
 samples[1],
 letter=colnames(samples[-1][apply(samples[-1],1,which.max)])
)

#  int letter
#1   1      y
#2   2      x
#3   3      z

关于r - 获取每行最大值的列名,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19087496/

10-10 02:02