0

我正在为布尔网络建模项目创建二进制真值表的输入结构。大小为n的网络中的每个节点可能有不同数量的输入k,从而产生不同维度的真值表。

我正在使用以下代码:

replicate(n, expand.grid(rep(list(0:1),times=k)), simplify=FALSE)

如果nk具有固定值,则它可以正常工作。

例如,在 n = 3 和 k = 2 的情况下,我得到三个 0 和 1 的 4x4 矩阵。这是一个有用的结果。

我的目标是做一些类似的事情,将固定的k替换为长度为n的数值向量,以便向量中的每个元素代表相应网络节点中的输入数量。

例如,如果n = 3x <- c(2, 3, 2),我会将 x 作为参数传递,输出将是 3 个尺寸为 4x4、8x8 和 4x4 的矩阵。

使用我现有的代码,当我将 k 定义为向量并尝试将其用作时间参数时,我发现它无效。

4

1 回答 1

1

k由于您每次都想更改,因此您应该使用k作为参数的函数,然后您可以应用它(而不是replicate)。例如

ks <- c(2, 3, 2)
lapply(ks, function(k) expand.grid(rep(list(0:1),times=k)))

我们在这里并不真正需要n,因为大概这只是值向量的长度k

于 2019-02-22T04:18:47.143 回答