可能“应用”与功能相关

时间:2013-03-13 21:57:49

标签: r

我正在通过使用以下代码创建表示[0,1] ^ d的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)

我想要应用于上面创建的hybercube的每个点。有没有一种很好的方法可以避免在d行中使用循环来执行此操作?我尝试使用各种应用函数,但这不成功。

感谢。

1 个答案:

答案 0 :(得分: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)