2016-07-25 5 views
1

Newb을 sytnax 적용 할이 은 /는 sapply 여기

이 또한 내가 summarise_all와 dplyr :: 입니다 THER summarise_each에서 찾고있다 ... sapply/적용과 매개 변수에 불과

mtcars$mynewcolumn = imgood....etc 

패스입니다 이 방법이 여기에서 효과가 있을까요?

+1

satyply (mtcars, function x) { quantile (x, c (.3, .9, .95, na.rm = TRUE)) })'''? – Abdou

+0

이것은 오타입니다. 당신은 쉼표'sapply를 놓쳤습니다. (mtcars, quantile, c (.3, .9, .95, na.rm = TRUE))' –

+0

위와 같이 숫자가 아닌 열을 추가 할 때까지 작동합니다. 나는 ---- sapply (mtcars, function (x) {ifelse (is.numeric (x), quantile (x, c (.3, .9, na.rm = TRUE), 'xxx')와 같은 것을 시도했다. }) ----하지만 다중 열 값에 대한 결과를 얻지 못합니다. – scbears88

답변

1

불행히도 quantile은 NA 또는 단일 NA의 벡터를 반환하도록 설계되지 않았습니다. 이 NA의 반복 분위수에 전달 된 두 번째 인수를 추출 필요로하기 때문에,

my_quantile <- function(x, ...) if (is.numeric(x)) {quantile(x,...)} else { 
               z <- list(...)[[1]]; rep(NA,length(z))} 

> sapply(mtcars, my_quantile, c(.3,.9, .95), na.rm=TRUE) 
     mpg cyl disp  hp drat  wt qsec vs am gear carb testcol 
30% 15.98 4 142.06 106.20 3.1500 2.77300 17.0200 0 0 3 2.0  NA 
90% 30.09 8 396.00 243.50 4.2090 4.04750 19.9900 1 1 5 4.0  NA 
95% 31.30 8 449.00 253.55 4.3145 5.29275 20.1045 1 1 5 4.9  NA 

그것은 아마도 당신이 쓰는 것이 첫 번째 함수 아니다 : 이것은 당신이 바라고 방식으로 행동 할 둘러싸 기능을 쓸 수 일어날 얻으려면 다른 분위수와 일치하는 횟수는 sapply이 목록이 아닌 매트릭스를 다시 실행하도록 허용합니다. 당신이 당신의 주장에 이름을 짓지 않고 있기 때문에 그것은 또한 약간 연약 할 것입니다. probs의 이름이 지정 되었다면 먼저 시도되지 않았을 수 있으므로 match.argsprobs 인수를 찾을 수 있는지 확인한 다음 실패한 경우 ... -argument-list의 첫 번째 인수를 사용하는 것이 좋습니다. .