假设我有一个空的my_tbl
(0行),但给出了其列类型。例如:
library(tibble)
library(lubridate)
my_tbl <- tibble(
x = integer(),
y = character(),
w = ymd(),
z = list()
)
如何用my_tbl
行随机填充n
(为演示起见,假设n=10
)?
如果可能的话,我正在寻找一段简单的tidyverse
代码(但基数R也可以)。
我知道我的要求没有完全指定如何填充这些行,但是不仅仅为每个列循环一个值就已经足够了。我想有一种简单的方法,可以根据已知的列类型随机生成tibbles
。最终目标是对这些生成的tibbles
进行测试。
答案 0 :(得分:2)
您可以编写一个调用sample
的函数以随机生成每一列:
library(tibble)
library(purrr)
get_random_tbl <- function(tbl, n){
classes <- map_chr(tbl, class)
map_dfc(
classes,
~{
switch(
.x,
integer = sample(1:100, n, replace = TRUE),
character = sample(LETTERS, n, replace = TRUE),
Date = sample(seq(as.Date('1999/01/01'), as.Date('2019/01/01'), by = "day"), n, replace = TRUE),
list = sample(c(list("x"), list(1)), n, replace = TRUE),
stop()
)
}
)
}
get_random_tbl(my_tbl, 3)
# A tibble: 3 x 4
# x y w z
# <int> <chr> <date> <list>
#1 18 V 2015-11-30 <dbl [1]>
#2 34 D 2004-05-26 <chr [1]>
#3 76 B 2007-03-16 <chr [1]>