我想使用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
?我不在乎里面有什么!
答案 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