当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。