当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


R tidyr expand_grid 从所有输入组合创建一个 tibble


expand_grid() 很大程度上受到 expand.grid() 的推动。与 expand.grid() 相比,它:

  • 产生排序的输出(通过改变最慢的第一列,而不是最快的列)。

  • 返回一个 tibble,而不是一个 DataFrame 。

  • 从不将字符串转换为因子。

  • 不添加任何附加属性。

  • 可以扩展任何广义向量,包括 DataFrame 。

用法

expand_grid(..., .name_repair = "check_unique")

参数

...

Name-value对。该名称将成为输出中的列名称。

.name_repair

有问题的列名的处理:

  • "minimal":没有名称修复或检查,超出基本存在,

  • "unique" :确保名称唯一且不为空,

  • "check_unique" :(默认值),没有名称修复,但检查它们是 unique

  • "universal" :命名为 unique 和语法

  • 函数:应用自定义名称修复(例如,.name_repair = make.names 用于基本 R 样式的名称)。

  • purrr-style 匿名函数,请参阅rlang::as_function()

此参数作为 repair 传递到 vctrs::vec_as_names() 。有关这些条款以及用于执行这些条款的策略的更多详细信息,请参阅此处。

... 中每个输入具有一列的小标题。对于每个输入组合,输出将为一行,即大小等于输入大小的乘积。这意味着如果任何输入的长度为 0,则输出的行数将为零。

例子

expand_grid(x = 1:3, y = 1:2)
#> # A tibble: 6 × 2
#>       x     y
#>   <int> <int>
#> 1     1     1
#> 2     1     2
#> 3     2     1
#> 4     2     2
#> 5     3     1
#> 6     3     2
expand_grid(l1 = letters, l2 = LETTERS)
#> # A tibble: 676 × 2
#>    l1    l2   
#>    <chr> <chr>
#>  1 a     A    
#>  2 a     B    
#>  3 a     C    
#>  4 a     D    
#>  5 a     E    
#>  6 a     F    
#>  7 a     G    
#>  8 a     H    
#>  9 a     I    
#> 10 a     J    
#> # … with 666 more rows

# Can also expand data frames
expand_grid(df = tibble(x = 1:2, y = c(2, 1)), z = 1:3)
#> # A tibble: 6 × 2
#>    df$x    $y     z
#>   <int> <dbl> <int>
#> 1     1     2     1
#> 2     1     2     2
#> 3     1     2     3
#> 4     2     1     1
#> 5     2     1     2
#> 6     2     1     3
# And matrices
expand_grid(x1 = matrix(1:4, nrow = 2), x2 = matrix(5:8, nrow = 2))
#> # A tibble: 4 × 2
#>   x1[,1]  [,2] x2[,1]  [,2]
#>    <int> <int>  <int> <int>
#> 1      1     3      5     7
#> 2      1     3      6     8
#> 3      2     4      5     7
#> 4      2     4      6     8
源代码:R/expand.R

相关用法


注:本文由纯净天空筛选整理自Hadley Wickham等大神的英文原创作品 Create a tibble from all combinations of inputs。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。