6

R では、別のベクトルの因数に従ってベクトルを分割できます。

> a <- 1:10
  [1]  1  2  3  4  5  6  7  8  9 10
> b <- rep(1:2,5)
  [1] 1 2 1 2 1 2 1 2 1 2

> split(a,b)

   $`1`
   [1] 1 3 5 7 9
   $`2`
   [1]  2  4  6  8 10

したがって、別のリストの値に従って(因子の順序に従って)リストを(Pythonの観点から)グループ化します。

itertools.groupbyアプローチを除いて、Pythonでそのような便利なものはありますか?

4

4 に答える 4

1

編集:警告、これgroupbyはOPが求めたものではない解決策ですが、PythonでRの方法を分割するためのあまり具体的な方法を探している人には役立つかもしれません。


を使用した1 つの方法を次に示しitertoolsます。

import itertools
# make your sample data
a = range(1,11)
b = zip(*zip(range(len(a)), itertools.cycle((1,2))))[1]

{k: zip(*g)[1] for k, g in itertools.groupby(sorted(zip(b,a)), lambda x: x[0])}
# {1: (1, 3, 5, 7, 9), 2: (2, 4, 6, 8, 10)}

これにより、R から取得する名前付きリストに類似した辞書が得られますsplit

于 2013-10-25T18:58:54.907 に答える