R 创建包含数百列的新TIBLE

R 创建包含数百列的新TIBLE,r,dplyr,tibble,R,Dplyr,Tibble,我想使用tidyverse中包含数百列的函数创建一个TIBLE,我不想逐列键入它们 是否可以使用tibble()函数创建列名为的tibble?(注意,我喜欢tibble()按顺序创建列的方式,因此在tibble()中包装基本R解决方案可能不会令人满意) 对于一个更具体的工作示例,让解决方案是调用tibble()创建一个5列tbl,在第1列中使用10个介于1和10之间的随机采样整数(sample(10))以及由前一列+sample(10)计算的每个后续列。例如,以下代码使用“col2=…”创建每一

我想使用tidyverse中包含数百列的函数创建一个
TIBLE
,我不想逐列键入它们

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

对于一个更具体的工作示例,让解决方案是调用
tibble()
创建一个5列
tbl
,在第1列中使用10个介于1和10之间的随机采样整数(
sample(10)
)以及由前一列+
sample(10)
计算的每个后续列。例如,以下代码使用
“col2=…”
创建每一列,但不是

set.seed(1)
tibble(col1=样品(10),
col2=col1+样品(10),
col3=col2+样品(10),
col4=col3+样品(10),
col5=col4+样品(10))
#一个tibble:10x5
第1列第2列第3列第4列第5列
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
编辑


好的,显然这可能不可能单独使用
tibble()
(待定)。是否可以使用
tible()
函数创建一个
tbl
,该函数有100列,每列分别命名为
col1
col2
col100
?我不管里面是什么

我怀疑您是否会喜欢这个解决方案,但这里有一种方法是使用
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
库(dplyr)
图书馆(rlang)
种子(1)

df听起来像是base R中的一个
Reduce
操作,虽然它不在tibble世界中,但它给出了相同的值:-
set.seed(1);Reduce(`+`,replicate(5,list(sample(10)),acculate=TRUE)
!坚持寻找一个更简单的解决方案,但如果没有其他弹出窗口,它会给你!(另请参阅我最近的编辑)@Brigadeiro我不确定在这种情况下是否可以对tibble进行不同的处理。就你的新编辑而言,也许你可以做
n=10;可编辑(矩阵(样本(100),ncol=10,dimnames=list(空,粘贴0(“col”,seq_len(n)))