R 创建包含数百列的新TIBLE
我想使用tidyverse中包含数百列的函数创建一个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=…”创建每一
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)))