我正在为布尔网络建模项目创建二进制真值表的输入结构。大小为 n 的网络中的每个节点可能具有不同数量的输入 k ,从而导致维度表的真值表。
我正在使用以下代码:
replicate(n, expand.grid(rep(list(0:1),times=k)), simplify=FALSE)
如果 n 和 k 具有固定值,则可以正常工作。
例如,在n = 3和k = 2的情况下,我得到三个0x和1s的4x4矩阵。这是一个有用的结果。
我的目标是用固定的 k 替换为长度为 n 的数值向量,以使向量中的每个元素都代表输入中的数量。相应的网络节点。
例如,如果n = 3
和x <- c(2, 3, 2)
,我将x作为参数传递,输出将是3个尺寸为4x4、8x8和4x4的矩阵。
使用我现有的代码,当我将k定义为向量并将其用作 times 参数时,我发现其无效。
答案 0 :(得分:0)
由于您每次都想更改k
,因此应使用k
作为参数来创建一个函数,然后可以对其应用(而不是replicate
)。例如
ks <- c(2, 3, 2)
lapply(ks, function(k) expand.grid(rep(list(0:1),times=k)))
我们实际上并不需要n
,因为大概k
值的向量的长度是多少。