我正在尝试使用Python Faker库中的一些功能在R中创建小标题。除日期外,其他所有方法都工作正常,日期已由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创建
答案 0 :(得分:0)
R按日期分类的向量是具有“日期”类和各种通用函数的整数,这些函数尊重该类以产生用户期望此类对象产生的行为。 R数组无法保存具有属性的对象,因此强制执行数组操作将使未分类的对象暴露其底层存储类。
storage.mode( as.Date("1970-01-01"))
[1] "double"
看看
的输出 print.Date
'+.Date'
diff.Date
最后获取任何数据对象并执行以下操作:
dput(object)
再看看:
sapply
您的那些对象无论如何都不是Dates,而是POSIXct对象。它们是类别为“ POSIXct”的浮点向量。
答案 1 :(得分:0)
正如弗里克先生所说,解决方案只是simplify = FALSE
。