2017-12-28 32 views
0

의 열 번호를 참조하여 결과 목록을 지정하면 data.frame A의 저장이 시뮬레이션의 결과 2 개 분포가 상상 : 이제data.table

sim1 = 1:10 
sim2 = 91:100 
sim = data.frame(sim1, sim2) 

을, 우리는 10 %를 찾으려면 및 각 분포의 90 % 백분위 수입니다. 이 작업은 수행 할 수 있습니다

diffSim = ncol(sim) 
confidenceInterval = c(0.1, 0.9) 
results = lapply(1:diffSim, function(j) {quantile(sim[, j], confidenceInterval, 
            names = FALSE, type = 3)}) 
내가 참조 ( :=)에 의해 할당하여 data.table 이러한 결과를 저장하고 싶은

. 그러나 우선 적절한 모양 (예 : 1 행 4 열의 data.table)으로 results을 가져와야합니다.

DT = data.table(Col1 = "Result") 

DT[, c("col2", "col3", "col4", "col5") := as.data.table(matrix(unlist(results), nrow = 1))] 

나는 모든이를 좋아하지 않는다 : 나는 이후 unlist, matrixas.data.tableresults에 적용, 이렇게하려면. 이 작업을 수행하는 짧은 방법이 있습니까?

+1

이유를 "1 행 4 열"? – MichaelChirico

+0

@MichaelChirico 'DT'는 다른 행으로 구성되기도합니다. – koteletje

답변

0
반드시

하지 짧은,하지만 data.table의 모든 :

library(data.table) 
setDT(sim)[, .(col1 = 'Result', 
       cols = paste0('col',2:5), 
       vals = unlist(lapply(.SD, quantile, probs = confidenceInterval, type = 3))) 
      ][, dcast(.SD, col1 ~ cols, value.var = 'vals')] 

제공 :

 col1 col2 col3 col4 col5 
1: Result 1 9 91 99