我目前正在研究在 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
你们会如何进行?
很抱歉这个问题看起来很基本,但我已经用谷歌搜索了很长一段时间没有结果。
欢呼和感谢。
最佳答案
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
关于r - 在 R 中为任何 dim-d 创建超立方体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15367565/