创建具有数百列的新标题

时间:2019-08-20 00:26:02

标签: r dplyr tibble

我想使用tidyverse中具有数百列的函数创建dashboard@appspot.gserviceaccount.com,并且我不想逐列键入它们。

是否可以使用tibble函数创建具有列名tibble? (请注意,我喜欢tibble()顺序创建列的方式,因此将基本R解决方案包装在tibble()中可能不会令人满意)。

对于一个更具体的工作示例,让该解决方案成为对tibble()的调用,以创建5列tibble(),该列具有10个随机采样的1到10之间的整数(tbl) 1以及由上一列+ sample(10)计算出的每个后续列。例如,以下代码但使用sample(10) not 创建每个列:

"col2=..."

修改

好吧,显然,仅凭set.seed(1) tibble(col1 = sample(10), col2 = col1 + sample(10), col3 = col2 + sample(10), col4 = col3 + sample(10), col5 = col4 + sample(10)) # A tibble: 10 x 5 col1 col2 col3 col4 col5 <int> <int> <int> <int> <int> 1 9 12 17 18 22 2 4 5 14 18 27 3 7 12 13 16 23 4 1 9 15 21 27 5 2 4 14 16 17 6 5 11 18 25 35 7 3 13 15 20 28 8 10 19 23 31 34 9 6 10 13 22 24 10 8 15 23 33 38 (TBD)可能无法实现。是否可以使用tibble()函数创建一个tbl,该函数有100列,分别名为tibble()col1,... col2?我不在乎里面有什么!

1 个答案:

答案 0 :(得分:2)

我怀疑您是否会喜欢这种解决方案,但这是使用for循环的一种方式

library(dplyr)
library(rlang)

set.seed(1)
df <- tibble::tibble(col1 = sample(10))
n <- 10

for (i in seq_len(n)[-1])  {
   df <- df %>% mutate(!!paste0("col",i) := !!sym(paste0("col", i-1)) + sample(10))
}


df
# A tibble: 10 x 10
#    col1  col2  col3  col4  col5  col6  col7  col8  col9 col10
#   <int> <int> <int> <int> <int> <int> <int> <int> <int> <int>
# 1     9    12    17    18    22    32    38    42    48    54
# 2     4     5    14    18    27    34    35    43    44    46
# 3     7    12    13    16    23    26    29    30    35    44
# 4     1     9    15    21    27    29    37    46    54    57
# 5     2     4    14    16    17    23    33    39    49    59
# 6     5    11    18    25    35    44    48    58    67    75
# 7     3    13    15    20    28    29    31    34    41    45
# 8    10    19    23    31    34    39    46    53    56    63
# 9     6    10    13    22    24    32    41    46    50    51
#10     8    15    23    33    38    42    47    49    51    56