我有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”“长度”
有什么主意吗?
答案 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)