本文介绍了如何将多列添加到Tibble?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我要向Tibble添加多个空列。新列的名称存储在"column nsToAdd"中

> columnsToAdd
[1] "column1" "column2" "column3" "column4" "column5"

当我运行以下代码行时,.

library(dplyr)

someTibble <- tibble(name = paste("Name", 1:10))

columnsToAdd <- paste("column", 1:30, sep = "")

someTibble %>%
tibble::add_column(columnsToAdd = NA)

.我得到的结果是.

# A tibble: 10 x 2
   name    columnsToAdd
   <chr>   <lgl>
 1 Name 1  NA
 2 Name 2  NA
 3 Name 3  NA
 4 Name 4  NA
 5 Name 5  NA
 6 Name 6  NA
 7 Name 7  NA
 8 Name 8  NA
 9 Name 9  NA
10 Name 10 NA

.相反,我希望获得以下结果:

# A tibble: 10 x 6
   name    column1 column2 column3 column4 column5
   <chr>     <dbl>   <dbl>   <dbl>   <dbl>   <dbl>
 1 Name 1       NA      NA      NA      NA      NA
 2 Name 2       NA      NA      NA      NA      NA
 3 Name 3       NA      NA      NA      NA      NA
 4 Name 4       NA      NA      NA      NA      NA
 5 Name 5       NA      NA      NA      NA      NA
 6 Name 6       NA      NA      NA      NA      NA
 7 Name 7       NA      NA      NA      NA      NA
 8 Name 8       NA      NA      NA      NA      NA
 9 Name 9       NA      NA      NA      NA      NA
10 Name 10      NA      NA      NA      NA      NA

推荐答案

您在tibble::add_column(columnsToAdd = NA)中看到的是dplyr和tidyr引入的准东西求值。如果您检查定义:

> args(add_column)
function (.data, ..., .before = NULL, .after = NULL)

您将看到它并不期望某个特定的变量。从字面上看,它需要实际的变量名,不带引号。

另一种完全不同的方法是创建一个矩阵(或data.frame,任何您喜欢的东西),并将其拍打到someTibble

的一侧
extra <- matrix(NA_real_, nrow=nrow(someTibble), ncol=length(columnsToAdd), dimnames=list(NULL, columnsToAdd))
dplyr::bind_cols(someTibble, as.data.frame(extra))

这篇关于如何将多列添加到Tibble?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

08-23 03:50