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

有人说过编程语言就是一门与计算机交流的语言,有过多年外语学习经验的我们也知道,充足的词汇量是进行外语沟通的基本条件。那么对于编程语言而已,函数即为词汇量。所以积累足够多的函数,对函数拥有举一反三的能力(类似于理解英语的词根),以及掌握函数之间的相互关联,对于学习编程语言来说都是极为重要的。

完。

上一篇 下一篇

猜你喜欢

热点阅读