我正在通过使用以下代码创建表示[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行中使用循环来执行此操作?我尝试使用各种应用函数,但这不成功。
感谢。
答案 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)