R检索矩阵中条件下的列名

R检索矩阵中条件下的列名,r,matrix,conditional-statements,R,Matrix,Conditional Statements,我有一个值为0或1的矩阵。当一行只有一个“1”时,我想返回列名,其中是“1”值,在任何其他情况下,得到“0”。对于以下示例: test <- matrix(c(0,1,0,1,0,0,1,0,1,0,0,0,1,0,0,0,1,0,0,1,0,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,1,0,0),ncol=5) colnames(test) <- c('c1','c2','c3','c4','c5') 好了: test <- matrix(c(0,1,

我有一个值为0或1的矩阵。当一行只有一个“1”时,我想返回列名,其中是“1”值,在任何其他情况下,得到“0”。对于以下示例:

test <- matrix(c(0,1,0,1,0,0,1,0,1,0,0,0,1,0,0,0,1,0,0,1,0,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,1,0,0),ncol=5)
colnames(test) <- c('c1','c2','c3','c4','c5')
好了:

test <- matrix(c(0,1,0,1,0,0,1,0,1,0,0,0,1,0,0,0,1,0,0,1,0,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,1,0,0),ncol=5)
colnames(test) <- c('c1','c2','c3','c4','c5')

result <- data.frame(test, result = apply(test, 1, function(row){ if(sum(row)==1)colnames(test)[[which(row==1)]]else 0}))

test我会更详细地说这句话,所以我不会接受它,但你试过什么?您期望的结果是什么?Thx,双“[”在“[[which(row==1)]”中不是必需的
test <- matrix(c(0,1,0,1,0,0,1,0,1,0,0,0,1,0,0,0,1,0,0,1,0,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,1,0,0),ncol=5)
colnames(test) <- c('c1','c2','c3','c4','c5')

result <- data.frame(test, result = apply(test, 1, function(row){ if(sum(row)==1)colnames(test)[[which(row==1)]]else 0}))