R 列中的最大日期与 sapply
Max date in R column with sapply
我正在尝试使用 sapply 获取列中的最大日期,但它返回的是数字而不是日期。知道如何解决这个问题吗?我似乎无法弄清楚为什么会这样..
mtcars$datecolm = '2015-03-03'
mtcars$datecolm[1] = '2015-09-09'
mtcars$datecolm = as.Date(mtcars$datecolm)
sapply(mtcars, max) # why is it returning a number instead of a date??
max(mtcars$datecolm) # works correctly
鉴于我的设置方式,请使用 sapply...我知道这适用于 apply(mtcars,2,max)。
我们需要使用 lapply
而不是 sapply
lapply(mtcars, max)
as sapply
returns a vector
因为 simplify=TRUE
默认参数和 vector
只能容纳一个 class。由于有数字列,'Date' 列(存储为整数)被强制为 integer
值。但是,如果我们使用simplify = FALSE
到return一个list
.
,我们仍然可以使用sapply
sapply(mtcars, max, simplify = FALSE)
关于apply
的使用
apply(mtcars,2,max)
我不建议使用 apply
,因为这会转换为矩阵,而矩阵只能容纳一个 class。在这里,当 'Date' class 转换为 character
.
时,将全部输出 character
关于OP在评论中提到的问题,当我们有属于不同class的输出时,我们可以使用list
或data.frame
(因为data.frame
是一个 list
) 作为 c
即连接 returns 一个 vector
如上所述,它只能容纳一个 class.
do.call(rbind, lapply(mtcars, function(x)
data.frame(Class=class(x), Max=max(x, na.rm=TRUE))))
我正在尝试使用 sapply 获取列中的最大日期,但它返回的是数字而不是日期。知道如何解决这个问题吗?我似乎无法弄清楚为什么会这样..
mtcars$datecolm = '2015-03-03'
mtcars$datecolm[1] = '2015-09-09'
mtcars$datecolm = as.Date(mtcars$datecolm)
sapply(mtcars, max) # why is it returning a number instead of a date??
max(mtcars$datecolm) # works correctly
鉴于我的设置方式,请使用 sapply...我知道这适用于 apply(mtcars,2,max)。
我们需要使用 lapply
而不是 sapply
lapply(mtcars, max)
as sapply
returns a vector
因为 simplify=TRUE
默认参数和 vector
只能容纳一个 class。由于有数字列,'Date' 列(存储为整数)被强制为 integer
值。但是,如果我们使用simplify = FALSE
到return一个list
.
sapply
sapply(mtcars, max, simplify = FALSE)
关于apply
apply(mtcars,2,max)
我不建议使用 apply
,因为这会转换为矩阵,而矩阵只能容纳一个 class。在这里,当 'Date' class 转换为 character
.
character
关于OP在评论中提到的问题,当我们有属于不同class的输出时,我们可以使用list
或data.frame
(因为data.frame
是一个 list
) 作为 c
即连接 returns 一个 vector
如上所述,它只能容纳一个 class.
do.call(rbind, lapply(mtcars, function(x)
data.frame(Class=class(x), Max=max(x, na.rm=TRUE))))