说我有这样的数据:
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
答案 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