r - 将 NA 转换为任何类型,包括 POSIXct
问题描述
我想在与 a 变量具有相同类型的变量中插入 NA。因此,对于可以具有任何类的变量x
,我想生成同一类的 NA。as(NA, class(x))
适用于一切,但POSIXct
:
> x = as.POSIXct("2021-01-01")
> as(NA, class(x))
Error in class1Def@contains[[class2]] : no such index at level 1
这同样适用于:
> x_na = NA
> class(x_na) = class(x)
> identical(x_na, lubridate::NA_POSIXct_)
FALSE
更广泛的背景:我试图为用户提供的 data.frame 中的特定行设置除某些列之外的所有列,该行可以具有任意数量的任何类型的列。所以 NA 应该是同一类型.. 使用
mutate(df, across(
-c(except, these, columns),
~ if_else(some_col == "some_value", as(NA, class(.)), .)
))
除了上述POSIXct
列错误外,效果很好。还有其他方法吗?
解决方案
POSIXct
作为一种不令人满意的解决方法,这种硬编码的vars替代方法有效:
classed_na = function(x) {
if (is.POSIXct(x)) {
lubridate::NA_POSIXct_
} else {
as(NA, class(x))
}
}
使用喜欢
mutate(df, across(
-c(except, these, columns),
~ if_else(some_col == "some_value", classed_na(.), .)
))
推荐阅读
- php - 动态访问嵌套数组中的值的更好方法
- python - python中的virtualenv:无法创建完整文件并激活不起作用
- php - 如何在 docker 容器中连接我的主机 mysql?
- python - Python for-loop为字典contact_emails的每次迭代重复输出input()(不是我想要的)
- sql - 根据某列的值从不同行中选择值
- django - Django 多对一
- swiftui - SwiftUI 每次都会重新编译 pod 和所有内容
- asp.net-core - ExceptionFilterAttribute 可能不会在 ApplicationInsights 中记录异常
- python - CSS 属性 Selenium 的值对所有图像返回 None
- apache-kafka - Kafka Connect RetriableCommitFailedException - 采取什么行动