2016-07-08 4 views
0

최대 날짜를 얻기 위해 sapply를 사용하려고하지만 날짜 대신 숫자가 반환됩니다. 어떤 생각이 어떻게 해결할 수 있습니까? 나는R 열의 최대 날짜가 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 내가이 설정 한 방법 주어진를 사용하십시오 ... 나는이 적용 (mtcars, 2, 최대)와 함께 작동 알고 ..이 발생하는 이유를 알아낼 수 없습니다.

+0

숫자 날짜 형식을 읽을 수있는 날짜 형식으로 변환하려면 datecolm 열 데이터를 변환하십시오. 예 : 'as.Date (16687, origin = "1970-01-01")' –

답변

2

우리는 단 하나의 클래스를 저장할 수있는 대신 sapply

lapply(mtcars, max) 

sapply로 리턴하기 때문에 simplify=TRUE 기본 인수의 vectorvectorlapply를 사용해야합니다. 숫자 열이 있으므로 '날짜'열 (정수로 저장 됨)은 integer 값으로 강제 변환됩니다. 그러나 을 사용하면 simplify = FALSE을 사용하여 list을 반환 할 수 있습니다. 나는이 행렬로 변환하고 행렬은 단지 하나의 클래스를 개최 수 apply를 사용하는 것이 좋습니다 않을 것 apply

apply(mtcars,2,max) 

의 사용에 관한

sapply(mtcars, max, simplify = FALSE) 

. 여기에서 '012'는 'character'으로 변환 된 'Date'클래스로 출력되는 모든 character입니다. 코멘트에 OP에 의해 언급 된 문제, 우리가 다른 클래스에 속하는 출력이있을 때, 우리는 즉, CONCATENATE는 vector 등을 반환 c로 (data.framelist처럼) list 또는 data.frame를 사용할 수 있습니다 중 하나에 대해서


위에서 언급 한 것처럼 하나의 클래스 만 가질 수 있습니다.

do.call(rbind, lapply(mtcars, function(x) 
      data.frame(Class=class(x), Max=max(x, na.rm=TRUE)))) 
+0

나는 이것과 비슷한 것을 사용하려고 노력했다. ---- as.data.frame (lapply (mtcars, function (x) c (class (x), max (x, na.rm = TRUE)))))) – runningbirds

+0

@runningbirds 언급 한 문제가있는 게시물을 업데이트했습니다. – akrun