我有一个长度为6个字符的字符串a =“100111”。我想在a中生成所有可能的字符组合。位置1,4,5,6中的“1”可以变为“0”,但位置2和3中的“0”保持为“0”。
我想要一个输出
<form id="frmTest" action="#" method="post">
<input type="tel" id="txtPhone" name="txtPhone" maxlength="20"
placeholder="555-555-5555" title="555-555-5555"
pattern="\d{3}-\d{3}-\d{4}" required>
<input type="submit" id="btnSubmit">
</form>
我尝试使用strsplit并尝试使用循环生成系列,方法是通过使用which()定位它们来更改0和1并替换它们。我无法得到输出。
我遇到的第一个问题是当我尝试将所有字符串添加到一起时。
有人可以帮助我制作这个系列吗?谢谢。
答案 0 :(得分:4)
您可以使用expand.grid()
:
a <- "100111"
a_split <- strsplit(a, "")[[1]]
a_list <- lapply(a_split, function(i) 0:i)
a_cases <- expand.grid(a_list)
sapply(1:nrow(a_cases), function(i) paste(a_cases[i, ], collapse = ""))
## [1] "000000" "100000" "000100" "100100" "000010" "100010" "000110" "100110" "000001" "100001" "000101"
## [12] "100101" "000011" "100011" "000111" "100111"
答案 1 :(得分:2)
我们可以尝试
a1 <- strsplit(a, "")[[1]]
i1 <- which(a1==1)
unlist(lapply(length(i1):0, function(i)
combn(i1, i, FUN = function(x) paste(replace(a1, x, 0), collapse=""))))
#[1] "000000" "000001" "000010" "000100" "100000" "000011" "000101" "000110"
#[9] "100001" "100010" "100100" "000111" "100011" "100101" "100110" "100111"