r - 按范围对数字向量进行分组

标签 r

我有一个排序向量:

c(1, 10, 31, 80, 100, 120, 160)
我想按范围将其元素分成几组,在本例中我将其设置为 31。
结果是这样的:
[[1]] 1, 10, 31
[[2]] 80, 100
[[3]] 100, 120
[[4]] 160
每组中的范围小于31。我尝试了一个循环,但我不喜欢它。另外,我尝试了 outer函数,我计算了所有成对差异:
res <- outer(vec, vec, "-")
然后按条件 > 0 过滤每一列和 < 31 .
apply(res, 2, function(x) x[x > 0 & x < 31])
虽然结果还不够好...

最佳答案

我认为这将有助于您的目的 终于
第一个列表将提取满足范围条件的项目,而 final_list 将删除实际包含在其他一些项目中的项目。

vec <- c(1, 10, 31, 80, 100, 120, 160)

first_list <- unique(apply(outer(vec, vec, "-"), 1, function(x){vec[(x < 31 & x >= 0)] }))

final_list <- first_list[!sapply(seq_along(first_list), function(i) max(sapply(first_list[-i],function(L) all(first_list[[i]] %in% L))))]

> final_list
[[1]]
[1]  1 10 31

[[2]]
[1]  80 100

[[3]]
[1] 100 120

[[4]]
[1] 160

关于r - 按范围对数字向量进行分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66220486/

相关文章:

r - 获取与行长度不均匀的条件匹配的数据帧行

r - 在 Python 中使用 R 和 Rpy2 : how to ggplot2?

regex - 删除R中字符串中大写字母的第一个实例之前的字符

r - 如何在 geom_text 中使用 position_dodge with preserve = 'single'?

r - 在 R 中的目录(在 Windows 系统中)中查找最近的文件

r - 有效地向后设置第一个月

r - 错误: cannot coerce type 'environment' to vector of type 'character'

r - fread 和带引号的多行列值

r - 如何将自定义长注释 geom_text 放入 donut chart 的绘图区域内?

r - 计算两个分组变量的每个组合的列总和