Передача вектора в качестве аргумента times для повторения в R - PullRequest
0 голосов
/ 22 февраля 2019

Я создаю структуру ввода двоичных таблиц истинности для проекта булева сетевого моделирования.Каждый узел в сети размером n может иметь различное количество входов k , что приводит к таблицам истинности различных размеров.

Я использую следующий биткода:

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

, который работает надлежащим образом, если n и k имеют фиксированные значения.

Например,в случае n = 3 и k = 2, я получаю три матрицы 4x4 0 и 1.Это полезный результат.

Моя цель - сделать что-то похожее с фиксированным k , замененным числовым вектором длины n таким, чтобы каждый элемент в векторепредставляет количество входов в соответствующем сетевом узле.

Например, если n = 3 и x <- c(2, 3, 2), я передам x в качестве аргумента, и на выходе получится 3 матрицы измерений 4x4, 8x8 и4x4.

Используя мой существующий код, когда я определяю k как вектор и пытаюсь использовать его в качестве аргумента times , я нахожу его недействительным.

1 Ответ

0 голосов
/ 22 февраля 2019

Поскольку вы хотите каждый раз изменять k, вы должны создать функцию с параметром k, а затем применить к нему (вместо replicate).Например,

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

Нам на самом деле не нужно n здесь, так как, по-видимому, это просто длина вектора значений k.

...