4

ベクトルに数字のリストがあったとしましょう。私は、リストをベクトル内の他の数値に比べて数値が互いにかなり近い(必ずしも偶数ではない)セットに分割またはソートするスクリプトを考え出そうとしています。ベクトル内の数値は昇順であると想定できます。

my_list<- c(795, 798, 1190, 1191, 2587, 2693, 2796, 3483, 3668)

つまり、これらの番号を分割してセットに割り当てるスクリプトを考え出すのに助けが必要です。

set_1<- c(795, 798) # these 2 numbers are fairly close to each other
set_2<- c(1190, 1191) # these numbers would be another set
set_3<- c(2587, 2693, 2796) # these numbers would be another set relative to the other numbers
set_4<- c(3483, 3668)  # the last set

ヘルプや提案は大歓迎です。

4

2 に答える 2

5

一般に、あなたが求めているのはクラスター分析と呼ばれ、多くの可能な方法とアルゴリズムがあり、その多くはここにリストされているRパッケージですでに利用可能です:http://cran.r-project.org/web/views /Cluster.html

たとえば、階層的クラスタリングを使用してデータをクラスタリングする方法を次に示します。

tree <- hclust(dist(my_list))
groups <- cutree(tree, h = 300)
# [1] 1 1 2 2 3 3 3 4 4
split(my_list, groups)
# $`1`
# [1] 795 798
# 
# $`2`
# [1] 1190 1191
# 
# $`3`
# [1] 2587 2693 2796
# 
# $`4`
# [1] 3483 3668
于 2012-11-25T01:00:15.647 に答える
3

Flodelの答えは、小さな指ぬきを埋めるのに十分なクラスター分析について知っているので、はるかに優れていますが、2つのエンドウ豆のための余地がありますが、基本的な応答は次のとおりです。

split(my_list, cut(my_list, breaks=seq(0, 4000, by=1000)))
于 2012-11-25T01:02:23.597 に答える