You can do the simulation for each index j
, using the lapply
function (and an example with more than one chr
value...)
allData = read.table(text=" Gene kaks chr
1 Bra011025 0.5909820 A01
2 Bra011027 0.3684600 A01
3 Bra011028 0.2126320 A01
4 Bra011030 0.0910217 A02
5 Bra011033 0.2412330 A02
6 Bra011034 0.1092790 A02", header=T)
setNames(lapply(unique(allData$chr), function(j) {
sapply(1:10, function(i) {
simulated.index <- sample(1:nrow(allData),sum(allData$chr==j))
simulated.kaks <- allData$kaks[simulated.index]
simulatedNot.kaks <- allData$kaks[-simulated.index]
mean(simulated.kaks)-mean(simulatedNot.kaks)
})
}), unique(allData$chr))
# $A01
# [1] 0.15869543 -0.16243990 -0.08979343 0.15869543 -0.07762190 -0.07072610
# [7] -0.05855457 -0.26258077 -0.15869543 -0.07072610
#
# $A02
# [1] 0.15869543 -0.07762190 0.01034743 0.17461143 -0.24351343 0.24351343
# [7] 0.24351343 -0.17461143 0.05855457 0.17461143