2015-10-05 54 views
1

我有一個data.frame,其中每列代表不同的個體,每行代表吃過的不同食物。在R中獨立引導​​數據幀列

我的目標是通過自舉對每列進行重新採樣,然後使用已定義的函數爲每個人(數據列)計算度量標準評分和C.I.s。

我已經在一個單獨的向量上成功完成了這個任務,但是不知道如何將自舉和度量函數應用到數據框中的單個列上。下面是我必須把它應用到單個向量代碼:

data.1 <- c(10, 50, 200, 54, 6) ## example vector 
## create function 
metric.function <- function(x){ 
    p <- x/sum(x) 
dap <- 1/sum(p^2) 
return(dap) 
} 
vect <- c() ## empty vector for bootstrap data 

for (i in 1:1000){ 
data.2 <- sample(data.1, replace = TRUE) ##bootstrap sample ## 
vect[i] <- metric.function (data.2)  ## apply metric.function ## 
} 

summary(vect) ## summary 
quantile(vect, probs = c(0.025, 0.975)) ## C.I. 

也能正常工作的一個載體,但我想在example.df單獨將它應用於多個列中的數據幀,例如下面我想將它應用到x1:x10獨立導致10場度量標準得分和10個獨聯體

example.df<-data.frame(replicate(10,sample(0:50,10,rep=TRUE))) 

我曾試圖改變vector項目的data.frameapplydply亂搞,但不能弄清楚,任何人都可以建議如何做它或指向我在T他有用的指導/網站等方向?

回答

1

這是一個完美的機會使用replicatesapply

replicate(1000, sapply(example.df, function(x) 
    metric.function(sample(x, replace = TRUE)))) 

sapply將操作列方向(假定一個data.frame在某種意義上列的list);一旦我們在sapply中隔離了一列,我們只需要重新採樣&應用我們的度量。

+0

謝謝,這正是我一直在尋找的! – flee