當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。