2

背景:我正在使用包含七个有序代码级别的定性数据编码方案。其中五个包含一个选项,两个包含两个互斥选项。给定的代码最多可以是七个组件代码的串联,但它们必须按照级别的顺序出现(因此我们有排列而不是组合)。困难的部分是代码可能包含任意数量的级别,1-7。

1 级:A
2 级:B 或 C
3 级:D 或 E
4 级:F
5 级:G
6 级:H
7 级:I

同样有效的示例代码:ABDFGHI、ACF、I、FGHI、ACE、FH

问题:我需要创建一个所有有效代码的列表,但由于排列可以是任意长度并且我找不到此处提出的相关现有问题,因此我在策略上苦苦挣扎。我最初的意图是使用 R,但我欢迎任何能够获得完整列表的方式。那里有任何指示吗?

4

1 回答 1

4

我不确定您到底需要如何输出,但这有效。将每个级别分配给一个变量,但添加一个NA。然后expand.grid像这样使用:

L1<-c("A",NA)
L2<-c("B","C",NA)
L3<-c("D","E",NA)
L4<-c("F",NA)
L5<-c("G",NA)
L6<-c("H",NA)
L7<-c("I",NA)
expand.grid(L1=L1,L2=L2,L3=L3,L4=L4,L5=L5,L6=L6,L7=L7)

输出的每一行都是一个组合,但它会包含NA未包含的变量。请注意,最后一行 288 是 all NA

注意,要获得没有NA你可以做的一行(以第 283 行为例):

Levels<-expand.grid(L1=L1,L2=L2,L3=L3,L4=L4,L5=L5,L6=L6,L7=L7)
Levels[283,][!is.na(Levels[283,])]
于 2014-10-16T16:53:57.013 回答