R | 排列组合
2019-05-26 本文已影响0人
尘世中一个迷途小书僮
最近发现了一个可以根据输入数据生成全部组合的一个函数expand.grid
,在此分享.
Description
Create a data frame from all combinations of the supplied vectors or factors. See the description of the return value for precise details of the way this is done.
试着生成(1,2,3)和(4,5,6)的所有组合
>expand.grid(c(1,2,3),c(4,5,6))
Var1 Var2
1 1 4
2 2 4
3 3 4
4 1 5
5 2 5
6 3 5
7 1 6
8 2 6
9 3 6
有了这种组合产生方式,我们可以进行多种数据操作,像简单的四则运算,求个概率之类的都是比较方便的。
> a$SUM <- a$Var1 + a$Var2
> a
Var1 Var2 SUM
1 1 4 5
2 2 4 6
3 3 4 7
4 1 5 6
5 2 5 7
6 3 5 8
7 1 6 7
8 2 6 8
9 3 6 9
另外,字符的组合也是可以的。因为生成的是数据框,所以要避免字符串被转为因子
> expand.grid(c("a","b","c"),c("e","f","g"), stringsAsFactors = F)
Var1 Var2
1 a e
2 b e
3 c e
4 a f
5 b f
6 c f
7 a g
8 b g
9 c g
有人说过编程语言就是一门与计算机交流的语言,有过多年外语学习经验的我们也知道,充足的词汇量是进行外语沟通的基本条件。那么对于编程语言而已,函数即为词汇量。所以积累足够多的函数,对函数拥有举一反三的能力(类似于理解英语的词根),以及掌握函数之间的相互关联,对于学习编程语言来说都是极为重要的。
完。