如何随机生成一个tibble意见,同时尊重现有列类型?

问题描述 投票:0回答:1

假设我有一个空tibble my_tbl(0行),但其列类型中给出。例如:

library(tibble)
library(lubridate)

my_tbl <- tibble(
  x = integer(),
  y = character(),
  w = ymd(),
  z = list()
  )

如何随机填充my_tbln行(假设n=10示范的目的)?

如果可能的话我找了一个简单的tidyverse一段代码(但基础R会就好了太)。

据我所知,我的要求并不完全指定如何填补这些行,但东西是不能简单地回收价值为每列应该已经足够了。我想有随机生成tibbles定的已知列类型的简单方法。最终的目标是上运行这些生成的tibbles测试。

r dataframe tibble
1个回答
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]>
© www.soinside.com 2019 - 2024. All rights reserved.