获取最高ID号列的数量

时间:2018-03-28 06:06:22

标签: r dataframe

说我有这样的数据:

df1 <- data.frame(ID_0=c("25","25"),
ID_1=c("1","2"),
ID_2=c("a","b")
)

df2 <- data.frame(ID_0=c("25","25"),
ID_1=c("1","2"),
ID_2=c("a","b"),
ID_3=c("c","d"),
ID_4=c("3","4")
)

df3 <- data.frame(ID_0=c("25","25")
)

我喜欢这样的功能(例如,实际上没有用):

which.max.ID(df1)
[1] 2

which.max.ID(df2)
[1] 4

which.max.ID(df3)
[1] 0

1 个答案:

答案 0 :(得分:2)

我们可以使用gsub删除所有非数字元素,转换为numeric并获取max

fmax <- function(dat){
     nm1 <- grep("ID", names(dat), value = TRUE)
     stopifnot(length(nm1) > 0)
     max(as.numeric(gsub("\\D+", "", nm1)))
  }

fmax(df1)
#[1] 2
fmax(df2)
#[1] 4
fmax(df3)
#[1] 0