1
> f =  function(x) as.Date(as.character(x), format='%Y%m%d')
> f(20110606)
[1] "2011-06-06"
> sapply(20110606, f)
[1] 15131

2つの戻り値が同じでない理由。この関数を日付の長いベクトルに適用する必要がありますが、sapply()で日付を取得できません!

4

2 に答える 2

8

作成に使用する関数fはすでにベクトル化されています。sapply冗長性部門で働いていない限り、を使用する必要はありません。

> f <- function(x) as.Date(as.character(x), format='%Y%m%d')
> d <- 20110606 + 0:10
> f(d)
 [1] "2011-06-06" "2011-06-07" "2011-06-08" "2011-06-09"
 [5] "2011-06-10" "2011-06-11" "2011-06-12" "2011-06-13"
 [9] "2011-06-14" "2011-06-15" "2011-06-16"
于 2012-07-09T20:24:00.327 に答える
7
> lapply(20110606, f)
[[1]]
[1] "2011-06-06"

> unlist(lapply(20110606, f))
[1] 15131

sapply重複してリストを解除し、そうすることで日付を分類解除します

> unclass(lapply(20110606, f)[[1]])
[1] 15131
> class(lapply(20110606, f)[[1]])
[1] "Date"

@Joshua Ulrichが指摘したように、applytype関数を使用する必要はありません。

 d <- 20110606 + 0:10
 do.call("c",lapply(d, f))

日付を「リストから外す」ための1つの可能な方法です

于 2012-07-09T20:11:56.420 に答える