R为什么Tibble的列表显示为Tibble的列表,而Tibble的向量显示为Tibble的单独列?

57hvy0tb  于 2023-03-27  发布在  其他
关注(0)|答案(1)|浏览(156)

R为什么Tibble的列表显示为Tibble的列表,而Tibble的向量显示为Tibble的单独列?

library(tidyverse)

t1 <- tibble(num = 1:7, ll = letters[1:7])

t2 <- tibble(num = 8:14, ll = letters[8:14])

t3 <- tibble(num = 15:21, ll = letters[15:21])

vecs <- c(t1, t2, t3)

lis <- list(t1, t2, t3)

vecs %>% str
#> List of 6
#>  $ num: int [1:7] 1 2 3 4 5 6 7
#>  $ ll : chr [1:7] "a" "b" "c" "d" ...
#>  $ num: int [1:7] 8 9 10 11 12 13 14
#>  $ ll : chr [1:7] "h" "i" "j" "k" ...
#>  $ num: int [1:7] 15 16 17 18 19 20 21
#>  $ ll : chr [1:7] "o" "p" "q" "r" ...

lis %>% str
#> List of 3
#>  $ : tibble [7 × 2] (S3: tbl_df/tbl/data.frame)
#>   ..$ num: int [1:7] 1 2 3 4 5 6 7
#>   ..$ ll : chr [1:7] "a" "b" "c" "d" ...
#>  $ : tibble [7 × 2] (S3: tbl_df/tbl/data.frame)
#>   ..$ num: int [1:7] 8 9 10 11 12 13 14
#>   ..$ ll : chr [1:7] "h" "i" "j" "k" ...
#>  $ : tibble [7 × 2] (S3: tbl_df/tbl/data.frame)
#>   ..$ num: int [1:7] 15 16 17 18 19 20 21
#>   ..$ ll : chr [1:7] "o" "p" "q" "r" ...

创建于2023-03-22带有reprex v2.0.2
我希望列表和向量被同样对待。

5kgi1eie

5kgi1eie1#

c只是删除tibble/data.frame类,并返回构建它的基础list结构。
如果recursive = TRUE,则函数递归地通过列表(和对列表)下降,将所有元素组合成一个向量。
因此,我们得到一个list的向量,而不仅仅是一个向量

> c(t1)
$num
[1] 1 2 3 4 5 6 7

$ll
[1] "a" "b" "c" "d" "e" "f" "g"

其中,as list将结构包裹在list内部

> list(t1)
[[1]]
# A tibble: 7 × 2
    num ll   
  <int> <chr>
1     1 a    
2     2 b    
3     3 c    
4     4 d    
5     5 e    
6     6 f    
7     7 g

相关问题