通過 $
、 [[
或 [
訪問列、行或單元格與 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 更嚴格。
例子
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 tibble tibble 構建 DataFrame 架
- R tibble char 設置字符向量格式
- R tibble frame_matrix 逐行矩陣創建
- R tibble num 設置數值向量的格式
- R tibble rownames 用於處理行名稱的工具
- R tibble enframe 將向量轉換為數據幀,反之亦然
- R tibble add_row 將行添加到 DataFrame
- R tibble as_tibble 將列表、矩陣等強製轉換為 DataFrame
- R tibble tibble_options 封裝選項
- R tibble add_column 將列添加到 DataFrame
- R tibble lst 建立一個清單
- R tibble formatting 打印小標題
- R tibble new_tibble Tibble 構造函數和驗證器
- R tibble tribble 逐行小標題創建
- R tidyr separate_rows 將折疊的列分成多行
- R tidyr extract 使用正則表達式組將字符列提取為多列
- R tidyr chop 砍伐和砍伐
- R tidyr pivot_longer_spec 使用規範將數據從寬轉為長
- R tidyr unnest_longer 將列表列取消嵌套到行中
- R tidyr uncount “計數” DataFrame
- R tidyr cms_patient_experience 來自醫療保險和醫療補助服務中心的數據
- R tidyr pivot_wider_spec 使用規範將數據從長軸轉向寬軸
- R tidyverse tidyverse_update 更新 tidyverse 軟件包
- R tidyr replace_na 將 NA 替換為指定值
- R tidyr unnest_wider 將列表列取消嵌套到列中
注:本文由純淨天空篩選整理自Kirill Müller等大神的英文原創作品 Subsetting tibbles。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。