通过 $
、 [[
或 [
访问列、行或单元格与 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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。