使用lapply / sapply创建单级列表而不强制

时间:2015-11-21 18:20:55

标签: r lapply sapply

示例数据

> library(data.table)
> x <- c(as.IDate("2012-01-01"), as.IDate("2012-01-02"))
> x
[1] "2012-01-01" "2012-01-02"
> class(x)
[1] "IDate" "Date"

我想在vector内执行一项功能,并将结果放在单级list中。这是理想的结果:

> y <- list(x = c(as.IDate("2012-01-01"), as.IDate("2012-01-02")))
> y
$x
[1] "2012-01-01" "2012-01-02"

> class(y)
[1] "list"
> class(y$x)
[1] "IDate" "Date" 

我已尝试过这些解决方案,但lapply喜欢构建多级listsapply喜欢强迫我IDateinteger

> list(x = lapply(x, function(x) x))
$x
$x[[1]]
[1] "2012-01-01"

$x[[2]]
[1] "2012-01-02"

> list(x = sapply(x, function(x) x))
$x
[1] 15340 15341

请注意,function(x)只是一个占位符,我想展示它是sapply是强制执行,而不是功能。

我怎样才能解决这个问题?

1 个答案:

答案 0 :(得分:2)

我们可以使用

lapply(list(x), yourfunction)