r语言 - 获取数据框架中特定值的列名和行名



假设我有这样一个数据框架:

> df <- data.frame(a=c(1, 2, 3), b=c(4, 5, 6), c=c(7, 8, 9), row.names=c(100, 200, 300))
> df
a b c
100 1 4 7
200 2 5 8
300 3 6 9
> 

我想获得5在该数据框中出现的行名和索引名。我可以:

> paste("row:", rownames(df)[rowSums(df == 5) > 0], "column:", colnames(df)[colSums(df == 5) > 0], collapse=" ")
[1] "row: 200 column: b"
> 

但我认为有更好的方法。

我想要的输出是:

row: 200 column: b

由于5位于那里。

有更好的方法吗?

您可以使用whicharr.ind = TRUE来获得5所在的行和列号。可以将其更改为行名和列名。

mat <- which(df == 5, arr.ind = TRUE)
paste('row : ', rownames(df)[mat[, 1]], 'column :', colnames(df)[mat[, 2]])
#[1] "row :  200 column : b"      

使用meltfromreshape2

library(reshape2)
with(melt(df == 5), sprintf('row : %s column: %s', Var1[value], Var2[value] ))
[1] "row : 200 column: b"

最新更新