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


R tibble as_tibble 將列表、矩陣等強製轉換為 DataFrame


as_tibble() 將現有對象(例如 DataFrame 或矩陣)轉換為所謂的 tibble,即具有 tbl_df 類的 DataFrame 。這與 tibble() 形成對比,tibble() 從各個列構建 tibble。 as_tibble() 對應於 tibble() 就像 base::as.data.frame() 對應於 base::data.frame()

as_tibble() 是 S3 泛型,具有以下方法:

as_tibble_row() 將向量轉換為一行的 tibble。如果輸入是列表,則所有元素的大小都必須為 1。

as_tibble_col() 將向量轉換為一列的 tibble。

用法

as_tibble(
  x,
  ...,
  .rows = NULL,
  .name_repair = c("check_unique", "unique", "universal", "minimal"),
  rownames = pkgconfig::get_config("tibble::rownames", NULL)
)

# S3 method for data.frame
as_tibble(
  x,
  validate = NULL,
  ...,
  .rows = NULL,
  .name_repair = c("check_unique", "unique", "universal", "minimal"),
  rownames = pkgconfig::get_config("tibble::rownames", NULL)
)

# S3 method for list
as_tibble(
  x,
  validate = NULL,
  ...,
  .rows = NULL,
  .name_repair = c("check_unique", "unique", "universal", "minimal")
)

# S3 method for matrix
as_tibble(x, ..., validate = NULL, .name_repair = NULL)

# S3 method for table
as_tibble(x, `_n` = "n", ..., n = `_n`, .name_repair = "check_unique")

# S3 method for NULL
as_tibble(x, ...)

# S3 method for default
as_tibble(x, ...)

as_tibble_row(
  x,
  .name_repair = c("check_unique", "unique", "universal", "minimal")
)

as_tibble_col(x, column_name = "value")

參數

x

可以合理地強製為 tibble 的 DataFrame 、列表、矩陣或其他對象。

...

未使用,用於擴展。

.rows

行數,可用於創建 0 列 tibble 或僅作為附加檢查。

.name_repair

有問題的列名的處理:

  • "minimal":沒有名稱修複或檢查,超出基本存在,

  • "unique" :確保名稱唯一且不為空,

  • "check_unique" :(默認值),沒有名稱修複,但檢查它們是 unique

  • "universal" :命名為 unique 和語法

  • 函數:應用自定義名稱修複(例如,.name_repair = make.names 用於基本 R 樣式的名稱)。

  • purrr-style 匿名函數,請參閱rlang::as_function()

此參數作為 repair 傳遞到 vctrs::vec_as_names() 。有關這些條款以及用於執行這些條款的策略的更多詳細信息,請參閱此處。

rownames

如何處理 DataFrame 或矩陣的現有行名稱:

  • NULL :刪除行名稱。這是默認設置。

  • NA:保留行名稱。

  • 字符串:新列的名稱。現有行名將傳輸到此列中,並且 row.names 屬性將被刪除。即使 x 已包含該名稱的列,也不會對新列名稱應用名稱修複。使用as_tibble(rownames_to_column(...)) 來防範這種情況。

閱讀rownames了解更多內容。

_n, validate

[Soft-deprecated]

僅出於兼容性目的,請勿用於新代碼。

n

計數列的名稱,默認值:"n"

column_name

列的名稱。

行名稱

默認行為是靜默刪除行名稱。

新代碼應使用 rownames 參數將行名稱顯式轉換為新列。

對於依賴行名稱保留的現有代碼,請在腳本或包的 .onLoad() 函數中調用 pkgconfig::set_config("tibble::rownames" = NA)

生命周期

從版本 3.0.0 開始,使用 as_tibble() 作為向量被取代,對於新代碼,更喜歡更具表現力的 as_tibble_row()as_tibble_col() 變體。

也可以看看

tibble() 從各個列構造一個 tibble。 enframe() 將命名向量轉換為包含一列名稱和一列值的 tibble。名稱修複是使用 vctrs::vec_as_names() 實現的。

例子

m <- matrix(rnorm(50), ncol = 5)
colnames(m) <- c("a", "b", "c", "d", "e")
df <- as_tibble(m)

as_tibble_row(c(a = 1, b = 2))
#> # A tibble: 1 × 2
#>       a     b
#>   <dbl> <dbl>
#> 1     1     2
as_tibble_row(list(c = "three", d = list(4:5)))
#> # A tibble: 1 × 2
#>   c     d        
#>   <chr> <list>   
#> 1 three <int [2]>
as_tibble_row(1:3, .name_repair = "unique")
#> New names:
#> • `` -> `...1`
#> • `` -> `...2`
#> • `` -> `...3`
#> # A tibble: 1 × 3
#>    ...1  ...2  ...3
#>   <int> <int> <int>
#> 1     1     2     3

as_tibble_col(1:3)
#> # A tibble: 3 × 1
#>   value
#>   <int>
#> 1     1
#> 2     2
#> 3     3
as_tibble_col(
  list(c = "three", d = list(4:5)),
  column_name = "data"
)
#> # A tibble: 2 × 1
#>   data        
#>   <named list>
#> 1 <chr [1]>   
#> 2 <list [1]>  
源代碼:R/as_tibble.R

相關用法


注:本文由純淨天空篩選整理自Kirill Müller等大神的英文原創作品 Coerce lists, matrices, and more to data frames。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。