2016-10-24 3 views
1

또는 quantile()과 같이 여러 행을 반환 할 수있는 함수를 사용하여 data.table에서 집계를 만들고 싶습니다. 내가 지금까지하는 방식은 다음과 같습니다.결과 집합의 이름을 R에 집계 R

library(data.table) 
x = as.data.table(iris) 
x[, as.list(c(summary(Sepal.Length), summary(Sepal.Width))), by = Species] 

이 방법은 작동하지만 임의의 열 이름이됩니다. 길이가 12 인 벡터 myColumnNames이있는 경우 다음 열의 setnames를 사용하지 않고이 벡터의 이름을 지정하여 새 열을 어떻게 설정할 수 있습니까?

"명백한"시도 인 경우 x[, myColumnNames = as.list(c(summary(Sepal.Length), summary(Sepal.Width))), by = Species]이 실패했습니다. 어떤 아이디어?

+2

얼마나 X [setNames (as.list (C (요약 (Sepal.Length), 요약 (Sepal.Width))), myColumnNames) =에 의해 종 '에 대한 ]' – akrun

+1

@akrun이 말한 것과'data.table :: setnames'를 사용하여 이름을 설정할 수 있습니다. 예를 들어,'setnames (y, 2 : 13, myColumnNames)','y'는 줄의 결과입니다. – nicola

+1

@akrun 솔루션이 완벽하게 작동합니다. 감사합니다! 게시 해주세요. 올바른 사과로 받아 들일 수 있습니다. @nicola'2 : 13'과 같은 인덱스를 가지고 놀지 않기 위해서 명령 뒤에'setnames()'를 피하고 싶었습니다. – GerasimosPanagiotakopoulos

답변

2

하나의 옵션은 setNames

x[, setNames(as.list(c(summary(Sepal.Length), 
     summary(Sepal.Width))), myColumnNames), by = Species] 
+0

매력처럼 작동합니다! 더 많은 옵션이 있다는 것도 암시하고 있습니까? – GerasimosPanagiotakopoulos

+0

@GerasimosPanagiotakopoulos 두 번째 옵션은 @nicola가 주석 처리 한대로'setnames'입니다 – akrun