gpt4 book ai didi

arrays - R填充值取决于组合

转载 作者:行者123 更新时间:2023-12-04 05:06:22 24 4
gpt4 key购买 nike

我有几个(可变)数量的字母组合使用的列表,例如:

vec = c("a", "b", "c")
comb = unlist(lapply(1:length(vec), combn, x = vec, simplify = FALSE), recursive = FALSE)
# this creates all the combinations of the vector I am interested in, i.e. for three letters:
# a b c ab ac bc abc

对于每种组合,我尝试根据位置将元素填充到长度与向量数相同的向量中。所以我试图得到:
a =   200
b = 020
c = 002
ab = 220
ac = 202
bc = 022
abc = 222

现在,我正在尝试用循环替换数组i,j的每个元素,但是由于所有值均为“2”,因此必须有一种更有效的方法吗?
非常感谢!!

最佳答案

仅从vec开始,您可以...

comb_cases = do.call(expand.grid, lapply(vec, function(x) c("", x)))

Var1 Var2 Var3
1
2 a
3 b
4 a b
5 c
6 a c
7 b c
8 a b c

空集的空白行可能会出现。

从这里...
comb = do.call(paste0, comb_cases)
# [1] "" "a" "b" "ab" "c" "ac" "bc" "abc"

do.call(paste0, split( ifelse(nchar(as.matrix(comb_cases)), 2, 0), col(comb_cases)) )
# [1] "000" "200" "020" "220" "002" "202" "022" "222"
ifelse很慢,但是以后可以解决这个问题。

关于arrays - R填充值取决于组合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38781081/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com