Tibble等价于R中的数据帧创建



R中,当我使用以下代码用data.frame()命令生成表时:

nn <- 10
df <- data.frame(Completers = rep(c(1, 0), each = nn),
Gender = c(1, 0))

我得到这个结果:

Completers Gender
1           1      1
2           1      0
3           1      1
4           1      0
5           1      1
6           0      0
7           0      1
8           0      0
9           0      1
10          0      0

然而,当我尝试用tibble::tibble():做同样的事情时

tb <- tibble::tibble(Completers = rep(c(1, 0), each = nn),
Gender = c(1, 0))

我得到以下错误:

Error:
! Tibble columns must have compatible sizes.
• Size 10: Existing data.
• Size 2: Column `Gender`.
ℹ Only values of size one are recycled.
Run `rlang::last_error()` to see where the error occurred.

不用说,运行rlang::last_error()对(至少对我(没有帮助。

当然,我可以简单地tb <- tibble::as_tibble(df),继续我的生活,但仍然。。。

因此,我的问题是:

  • 为了获得与上述相同的结果,tibble()代码等效于data.frame()的代码是什么

sessioninfo::session_info()提取物:

setting  value
version  R version 4.2.1 (2022-06-23)
os       macOS Monterey 12.6
system   x86_64, darwin17.0
rstudio  2022.07.1+554 Spotted Wakerobin (desktop)
-------------------------------------------------------
package              * version    date (UTC) lib source
tibble                 3.1.8      2022-07-22 [1] CRAN (R 4.2.0)

?tibble文档中提到了这一点

tibble((按顺序构建列。定义列时,可以引用调用中前面创建的列。只有长度为1的列才会被回收

> tibble::tibble(Completers = rep(c(1, 0), each = nn), Gender = 1)
# A tibble: 20 × 2
Completers Gender
<dbl>  <dbl>
1          1      1
2          1      1
3          1      1
4          1      1
5          1      1
6          1      1
7          1      1
8          1      1
9          1      1
10          1      1
11          0      1
12          0      1
13          0      1
14          0      1
15          0      1
16          0      1
17          0      1
18          0      1
19          0      1
20          0      1

如果我们想获得相同的输出,请使用replength.output

tibble::tibble(Completers = rep(c(1, 0), each = nn), 
Gender = rep(c(1, 0), length.out = length(Completers)))
# A tibble: 20 × 2
Completers Gender
<dbl>  <dbl>
1          1      1
2          1      0
3          1      1
4          1      0
5          1      1
6          1      0
7          1      1
8          1      0
9          1      1
10          1      0
11          0      1
12          0      0
13          0      1
14          0      0
15          0      1
16          0      0
17          0      1
18          0      0
19          0      1
20          0      0

最新更新