3

我目前正在研究一个在 d 维度上工作的 R 代码。唯一的问题是......我对 R 很陌生,所以我不确定如何在 R 中创建一个 d 维超立方体等价物。

使用其他语言的一些概念,我尝试编码

## creation of the d-dimensional hypercube
expression <- "u1=(1:20)/20"
   for (i in 2:d) {
     extension <- paste("u", i, "=(1:10)/10",sep = "")          
     expression <- paste(expression, extension, sep = ", ")
}
q <- as.matrix(expand.grid(eval(parse(text=expression)), KEEP.OUT.ATTRS=FALSE))

但这不起作用,因为解析函数不喜欢逗号......

基本上,对于任何 dim=d,我需要一种方法来创建矩阵或数据框,以提供所有组合,例如,

 u=(1:10)/10

你们将如何进行?

对不起,这个问题似乎很基本,但我已经用谷歌搜索了很长一段时间没有结果。

干杯和感谢。

4

1 回答 1

3
makeHypercube <- function(dim, ticks) {
    do.call(expand.grid, 
            replicate(dim, seq_len(ticks)/ticks, simplify=FALSE))
}

## Try it out
makeHypercube(dim=3, ticks=2)
#   Var1 Var2 Var3
# 1  0.5  0.5  0.5
# 2  1.0  0.5  0.5
# 3  0.5  1.0  0.5
# 4  1.0  1.0  0.5
# 5  0.5  0.5  1.0
# 6  1.0  0.5  1.0
# 7  0.5  1.0  1.0
# 8  1.0  1.0  1.0

## Check that it works in higher dimensions
dim(makeHypercube(dim=10, ticks=3))
## [1] 59049    10
于 2013-03-12T17:06:21.040 回答