按编号对列名称进行排序

时间:2019-05-13 11:47:09

标签: r

我有3个不同的数据框。 colname(df)之后,我为数据框添加了这种形式的名称列:

  

名称长度20 21 22 23 24 25 26

     

名称长度因数18 19 20 21 22 23 24

     

名称长度深18 19 20 21 22 23 24 25 26

但是我想得到最大和最小的元素(数字总是按正确的顺序排列,但不一定在同一位置。)

在此示例中,它将是第一个:20,26 第二个:18,24 第三点:18,26

我使用:range(colname(df), finite = TRUE)

但是结果是“ 18”“长度”

有什么主意吗?

1 个答案:

答案 0 :(得分:2)

我们可以将所选列的列名转换为数字,然后使用range

nm1 <- grep("^\\d+$", names(df1))
range(as.numeric(names(df1)[nm1]))

它可以转换为函数

f1 <- function(data) {

  nm1 <- grep("^\\d+$", names(data))
  range(as.numeric(names(data)[nm1]))
  }

f1(df1)
f1(df2)

它也可以直接转换而无需对列进行任何设置,但是会出现警告消息

range(as.numeric(names(df1)), na.rm = TRUE)