r函数返回列号

时间:2014-07-23 21:55:15

标签: r

我有一个如下所示的数据框:

df<-data.frame(H0<-c(35.4, 36.0, 36.0, 36.4), H1<-c(34.2, 34.0, NA, NA), 
           H2<-c(33.4, 33.5, NA, 34.2), H3<-c(32.9, 33.0, 34.0, NA),
           H4<-c(32.8, 33.0, 33.5, 33.2))

我需要找到第一行中每行的最小值:

min(df[1,], na.rm=TRUE)

r中是否有一个函数会返回列号(本例中为5)而不是实际值。

2 个答案:

答案 0 :(得分:1)

df<-data.frame(H0=c(35.4, 36.0, 36.0, 36.4), H1=c(34.2, 34.0, NA, NA), 
               H2=c(33.4, 33.5, NA, 34.2), H3=c(32.9, 33.0, 34.0, NA),
               H4=c(32.8, 33.0, 33.5, 33.2))
which.min(df[1,])
# H4 
#  5 

注意:使用例如创建数据框时H0<-c(...)而不是H0=c(...)您也在创建向量H0等,并且列名称将难以理解。

答案 1 :(得分:1)

如果您需要获取行中所有min值的列名

apply(df,1, function(x) {x1 <-x[!is.na(x)]; which(x1== min(x1))})
#   [[1]]
#   H4 
#   5 

# [[2]]
# H3 H4 
#  4  5 

# [[3]]
# H4 
#  3 

# [[4]]
# H4 
# 3