1

このフォーラムの別のユーザーから提案された次のコードを使用して、[0,1]^dを表す広告次元超立方体を作成しています。

## generation of the d-dimensional hypercube
cube <- do.call(expand.grid,replicate(d, seq_len(mesh)/mesh, simplify=FALSE))

私が関数を持っているとしましょう、

 foo <- function(u) prod(u)

上で作成したハイパーキューブのすべてのポイントに適用したいと思います。d行を通るループを使用しないようにするための良い方法はありますか?いろいろな適用機能を使ってみましたが、うまくいきませんでした。

ありがとう。

4

1 に答える 1

0

まず第一に、あなたに頂点の座標を与えるための関数:

hypercube <- function(d, coord = c(0, 1))
    do.call(expand.grid, replicate(d, coord, simplify = FALSE))

たとえば、:を使用しd = 3ます

cube <- hypercube(d = 3)
cube
#   Var1 Var2 Var3
# 1    0    0    0
# 2    1    0    0
# 3    0    1    0
# 4    1    1    0
# 5    0    0    1
# 6    1    0    1
# 7    0    1    1
# 8    1    1    1

次に、fooハイパーキューブのすべての頂点で関数を実行するには、次を使用しますapply

apply(cube, 1, foo)
于 2013-03-14T02:02:11.207 に答える