Я хотел бы сгенерировать все комбинации двух векторов с учетом двух ограничений: никогда не может быть более 3 символов из первого вектора, и всегда должен быть хотя бы один символ из второго вектора. Я также хотел бы изменить конечное количество символов в комбинации.
Например, вот два вектора:
vec1=c("A","B","C","D")
vec2=c("W","X","Y","Z")
Скажем, я хотел 3 символа в комбинации. Возможные приемлемые перестановки: "A" "B" "X"
или "A" "Y" "Z"
. Недопустимой перестановкой будет: "A" "B" "C"
, так как нет хотя бы одного символа из vec2
.
Теперь скажем, что я хотел 5 символов в комбинации. Возможные приемлемые перестановки: "A" "C" "Z" "Y"
или "A" "Y" "Z" "X"
. Недопустимой перестановкой будет: "A" "C" "D" "B" "X"
, так как есть >3 символа из vec2
.
Я полагаю, что мог бы использовать expand.grid
для создания всех комбинаций, а затем каким-то образом подмножества, но должен быть более простой способ. Заранее спасибо!
vec=letters[1:3]
,vec=month.name[1:4]
), как мне выбрать комбинации с 3 записями (очевидно, nchar не будет работать) 09.05.2012strtrim
, чтобы ограничить количество символов в каждом векторе, и использовал их для создания комбинаций. 10.05.2012