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


R tibble subsetting 子集化標題


通過 $[[[ 訪問列、行或單元格與 regular data frames 非常相似。但是,在某些情況下,小標題和 DataFrame 的行為有所不同:

  • [ 默認情況下總是返回一個 tibble,即使隻訪問一列。

  • 不支持列名與 $[[ 部分匹配,並返回 NULL。對於 $ ,會給出警告。

  • 僅標量(長度為 1 的向量)或長度與行數相同的向量可用於賦值。

  • 無法訪問小標題邊界之外的行。

  • 使用 [[<-[<- 更新時,支持整個列的類型更改,但更新列的一部分要求新值可強製為現有類型。有關底層實現,請參閱vec_slice()

不穩定的返回類型和隱式部分匹配可能會導致難以捕捉的意外和錯誤。如果您依賴需要原始數據幀行為的代碼,請通過 as.data.frame() 強製轉換為數據幀。

用法

# S3 method for tbl_df
$(x, name)

# S3 method for tbl_df
[[(x, i, j, ..., exact = TRUE)

# S3 method for tbl_df
[(x, i, j, drop = FALSE, ...)

# S3 method for tbl_df
$(x, name) <- value

# S3 method for tbl_df
[[(x, i, j, ...) <- value

# S3 method for tbl_df
[(x, i, j, ...) <- value

參數

x

一點點。

name

name 或字符串。

i, j

行索引和列索引。如果省略j,則使用i作為列索引。

...

忽略。

exact

被忽略,並帶有警告。

drop

如果通過 tbl[, j] 獲取一列,則強製轉換為向量。默認 FALSE ,通過 tbl[j] 訪問列時忽略。

value

要存儲在行、列、區域或單元格中的值。在此處接受的內容中,Tibbles 比 DataFrame 更嚴格。

細節

為了更好地與為常規數據幀編寫的舊代碼兼容,[ 支持 drop 參數,默認為 FALSE 。新代碼應使用[[ 將列轉換為向量。

例子

df <- data.frame(a = 1:3, bc = 4:6)
tbl <- tibble(a = 1:3, bc = 4:6)

# Subsetting single columns:
df[, "a"]
#> [1] 1 2 3
tbl[, "a"]
#> # A tibble: 3 × 1
#>       a
#>   <int>
#> 1     1
#> 2     2
#> 3     3
tbl[, "a", drop = TRUE]
#> [1] 1 2 3
as.data.frame(tbl)[, "a"]
#> [1] 1 2 3

# Subsetting single rows with the drop argument:
df[1, , drop = TRUE]
#> $a
#> [1] 1
#> 
#> $bc
#> [1] 4
#> 
tbl[1, , drop = TRUE]
#> # A tibble: 1 × 2
#>       a    bc
#>   <int> <int>
#> 1     1     4
as.list(tbl[1, ])
#> $a
#> [1] 1
#> 
#> $bc
#> [1] 4
#> 

# Accessing non-existent columns:
df$b
#> [1] 4 5 6
tbl$b
#> Warning: Unknown or uninitialised column: `b`.
#> NULL

df[["b", exact = FALSE]]
#> [1] 4 5 6
tbl[["b", exact = FALSE]]
#> Warning: `exact` ignored.
#> NULL

df$bd <- c("n", "e", "w")
tbl$bd <- c("n", "e", "w")
df$b
#> NULL
tbl$b
#> Warning: Unknown or uninitialised column: `b`.
#> NULL

df$b <- 7:9
tbl$b <- 7:9
df$b
#> [1] 7 8 9
tbl$b
#> [1] 7 8 9

# Identical behavior:
tbl[1, ]
#> # A tibble: 1 × 4
#>       a    bc bd        b
#>   <int> <int> <chr> <int>
#> 1     1     4 n         7
tbl[1, c("bc", "a")]
#> # A tibble: 1 × 2
#>      bc     a
#>   <int> <int>
#> 1     4     1
tbl[, c("bc", "a")]
#> # A tibble: 3 × 2
#>      bc     a
#>   <int> <int>
#> 1     4     1
#> 2     5     2
#> 3     6     3
tbl[c("bc", "a")]
#> # A tibble: 3 × 2
#>      bc     a
#>   <int> <int>
#> 1     4     1
#> 2     5     2
#> 3     6     3
tbl["a"]
#> # A tibble: 3 × 1
#>       a
#>   <int>
#> 1     1
#> 2     2
#> 3     3
tbl$a
#> [1] 1 2 3
tbl[["a"]]
#> [1] 1 2 3
源代碼:R/sub.RR/subassign.R

相關用法


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