【发布时间】:2019-02-19 15:13:34
【问题描述】:
我正在尝试使用 Python Faker 库中的一些函数在 R 中构建一个 tibble。除日期外,所有工作正常,日期被replicate() 转换为整数。
下面的可复制示例,其中一个示例在底部没有复制就可以正常工作。
我认为这是因为 replicate() 是 sapply() 和 simplify = "array" 的包装器,但是,使用复制的副本不会改变结果(例如 replicate2 <- function(n, expr) sapply(intenger(n), eval.parent(substitute(function(...) expr))))。
library(tidyverse); library(reticulate)
# Python Faker library
faker <- import("faker")
fake <- faker$Faker()
make_df <- function(N){
txns <- tibble(
date_time = replicate(5, fake$date_time_between(start_date = "-1y",
end_date = "now") %>%
str_extract("[0-9-]*") %>% lubridate::parse_date_time("Ymd"))
)
return(txns)
}
make_df(5)
#> # A tibble: 5 x 1
#> date_time
#> <dbl>
#> 1 1545177600
#> 2 1546473600
#> 3 1537833600
#> 4 1547596800
#> 5 1531008000
fake$date_time_between(start_date = "-1y", end_date = "now") %>%
str_extract("[0-9-]*") %>% lubridate::parse_date_time("Ymd")
#> [1] "2018-07-25 UTC"
由reprex package (v0.2.1) 于 2019-02-19 创建
【问题讨论】:
-
尝试使用
simplify=FALSE -
完美,有效。我认为 sapply 的默认值是 FALSE!谢谢!