gpt4 book ai didi

r - 带有 lapply 和 sapply 的日期

转载 作者:行者123 更新时间:2023-12-04 23:24:54 24 4
gpt4 key购买 nike

我导入了一个包含多个日期的 CSV 文件,并使用 as.Date 函数来转换日期。但是,当我使用 mapply 函数查找两个日期中较早的日期时,我最终会得到一个包含日期的列表或一个数字向量。如何获得带有日期的向量?

POP.Start.final <- mapply(min, combinedOM$Cons.Start.Date.y, 
combinedOM$OS.Start.Date.y,
MoreArgs = list(na.rm=T),SIMPLIFY=T)

这将返回一个数字向量,更改为 SIMPLIFY=F 返回一个日期列表,但我想要一个日期向量。

最佳答案

在这种特定情况下,我相信 pmin诀窍:

POP.Start.final <- pmin(combinedOM$Cons.Start.Date.y,
combinedOM$OS.Start.Date.y,
na.rm=TRUE)

一般情况下, SIMPLIFY=TRUE (默认)使用效用函数 simplify2array通过 as.vector 将列表转换为原子模式的向量.因为日期在内部存储为数字, SIMPLIFY=TRUE将日期列表转换为模式数字向量并删除 Date类(class)。您可以设置 SIMPLIFY=FALSE保留 Date类然后使用 do.callc将列表转换为向量。
POP.Start.final <- do.call(c,mapply(min, combinedOM$Cons.Start.Date.y, 
combinedOM$OS.Start.Date.y,
MoreArgs = list(na.rm=TRUE),SIMPLIFY=FALSE))

一些可重现的代码:
a <- as.Date(c("2012-01-11","2012-06-30","2012-04-18"))
b <- as.Date(c("2013-04-21","2012-03-22","2012-05-01"))
pmin(a,b)
#[1] "2012-01-11" "2012-03-22" "2012-04-18"
do.call(c,mapply(min,a,b,MoreArgs=list(na.rm=TRUE),SIMPLIFY=FALSE))
#[1] "2012-01-11" "2012-03-22" "2012-04-18"

顺便说一句,使用 TFTRUEFALSE有点担心,因为 TF可以重新分配,而 TRUEFALSE不能重新分配。

关于r - 带有 lapply 和 sapply 的日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14449166/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com