r - as.Date() 在函数内部产生 NA,但在函数外部工作
问题描述
我有一家电信公司的数据集(截图 1和截图 2),其中每一行代表一个客户。我正在尝试为每个客户模拟订阅结束日期,但是当我调用 getSubscriptionEndingDate() 时出现 2 个错误。我的猜测是,一旦我弄清楚如何摆脱第二个错误(在 as.Date(as.numeric(client$subscriptionDates) + randomDaysOfService: NAs 由强制引入) ,第一个错误就会得到解决。我试过运行它在函数之外,它工作得很好.有什么想法为什么我在调用函数时会得到 NAs 吗?
我在网上找不到答案,我不知道该尝试什么。我是 R 新手,这是我第一次在这里发帖,所以请多多包涵:)
# Function Call
getSubscriptionEndingDate <- function(client) {
client <- as.list(client)
isRandomDaysOfServiceNegative = TRUE
while (isRandomDaysOfServiceNegative) {
randomDaysOfService <- round(rnorm(1, 540+as.numeric(client$numberOfAdditionalDaysOfService), 150))
if(randomDaysOfService > 0){isRandomDaysOfServiceNegative = FALSE}
}
subscriptionEndingDate <- as.Date(as.numeric(client$subscriptionDates)+randomDaysOfService, origin = "1970-01-01")
if(subscriptionEndingDate > Sys.Date()){
return(NA)
} else {
return(subscriptionEndingDate)
}
}
subscriptionEndingDate <- apply(telcoDataset, 1, getSubscriptionEndingDate)
#> Error in if (subscriptionEndingDate > Sys.Date()) { :
#> missing value where TRUE/FALSE needed
#> In addition: Warning message:
#> In as.Date(as.numeric(client$subscriptionDates) + randomDaysOfService, :
#> NAs introduced by coercion
# Outside of function
x <- as.list(telcoDataset[1, ])
isRandomDaysOfServiceNegative = TRUE
while (isRandomDaysOfServiceNegative) {
randomDaysOfService <- round(rnorm(1, 540+as.numeric(x$numberOfAdditionalDaysOfService), 150))
if(randomDaysOfService > 0){isRandomDaysOfServiceNegative = FALSE}
}
as.Date(as.numeric(x$subscriptionDates)+randomDaysOfService, origin = "1970-01-01")
由reprex 包于 2021-08-04 创建 (v2.0.0 )
会话信息sessioninfo::session_info()
#> - Session info ---------------------------------------------------------------
#> setting value
#> version R version 4.1.0 (2021-05-18)
#> os Windows 10 x64
#> system x86_64, mingw32
#> ui RTerm
#> language (EN)
#> collate English_Canada.1252
#> ctype English_Canada.1252
#> tz America/New_York
#> date 2021-08-04
#>
#> - Packages -------------------------------------------------------------------
#> package * version date lib source
#> backports 1.2.1 2020-12-09 [1] CRAN (R 4.1.0)
#> cli 3.0.0 2021-06-30 [1] CRAN (R 4.1.0)
#> crayon 1.4.1 2021-02-08 [1] CRAN (R 4.1.0)
#> digest 0.6.27 2020-10-24 [1] CRAN (R 4.1.0)
#> ellipsis 0.3.2 2021-04-29 [1] CRAN (R 4.1.0)
#> evaluate 0.14 2019-05-28 [1] CRAN (R 4.1.0)
#> fansi 0.5.0 2021-05-25 [1] CRAN (R 4.1.0)
#> fs 1.5.0 2020-07-31 [1] CRAN (R 4.1.0)
#> glue 1.4.2 2020-08-27 [1] CRAN (R 4.1.0)
#> highr 0.9 2021-04-16 [1] CRAN (R 4.1.0)
#> htmltools 0.5.1.1 2021-01-22 [1] CRAN (R 4.1.0)
#> knitr 1.33 2021-04-24 [1] CRAN (R 4.1.0)
#> lifecycle 1.0.0 2021-02-15 [1] CRAN (R 4.1.0)
#> magrittr 2.0.1 2020-11-17 [1] CRAN (R 4.1.0)
#> pillar 1.6.1 2021-05-16 [1] CRAN (R 4.1.0)
#> pkgconfig 2.0.3 2019-09-22 [1] CRAN (R 4.1.0)
#> purrr 0.3.4 2020-04-17 [1] CRAN (R 4.1.0)
#> reprex 2.0.0 2021-04-02 [1] CRAN (R 4.1.0)
#> rlang 0.4.11 2021-04-30 [1] CRAN (R 4.1.0)
#> rmarkdown 2.9 2021-06-15 [1] CRAN (R 4.1.0)
#> sessioninfo 1.1.1 2018-11-05 [1] CRAN (R 4.1.0)
#> stringi 1.6.1 2021-05-10 [1] CRAN (R 4.1.0)
#> stringr 1.4.0 2019-02-10 [1] CRAN (R 4.1.0)
#> styler 1.5.1 2021-07-13 [1] CRAN (R 4.1.0)
#> tibble 3.1.2 2021-05-16 [1] CRAN (R 4.1.0)
#> utf8 1.2.1 2021-03-12 [1] CRAN (R 4.1.0)
#> vctrs 0.3.8 2021-04-29 [1] CRAN (R 4.1.0)
#> withr 2.4.2 2021-04-18 [1] CRAN (R 4.1.0)
#> xfun 0.24 2021-06-15 [1] CRAN (R 4.1.0)
#> yaml 2.2.1 2020-02-01 [1] CRAN (R 4.1.0)
#>
#> [1] C:/Users/Philippin Phallus/Documents/R/win-library/4.1
#> [2] C:/Program Files/R/R-4.1.0/library
解决方案
推荐阅读
- python - 如何使用摄像机实现 keras mnist 模型
- unity3d - 我想知道为什么在 Unity 中工作的简单脚本中会抛出空引用
- github - 在不克隆的情况下搜索 github 存储库(或存储库的子目录)的字符串?
- celery - Celery:与正在运行的任务交互/通信
- json - 没有开始双引号的json标签工作
- json - Using nested JSON data in D3
- asp.net-core - ASP.NET Core - 有没有办法使用自定义标签助手来呈现一组元素?
- python - 为什么空的 MySQL 数据库声称有重复项(Python 3)?
- sql - 如何在 postgres 中运行 50 个数据库中的查询?
- python - pytest:如果设置出现问题,如何跳过测试用例并直接进行清理?