2013-09-25 20 views
1

的函數:Ploting箱線圖作爲我已經寫硬幣的一小SIM擲參數(拋硬幣和頻率波動)

frequencePile <- function(repetition) 
{ 
    lances <- sample(0:1,repetition,rep=T) 
    piles <- sum(lances) 
    freqP <-piles/length(lances) 
    return(freqP) 
} 
################### 
essais <- function(Nessais, rep){ 
    frequences <-{} 
    for (e in 1:Nessais) 
    { 
    frequences <-c(frequences, frequencePile(rep)) 
    } 
    return(frequences) 
} 
################## 
effetRepvsFluct <- function (repetitionMin,repetitionMax, step,TailleEssai){ 
    ###créons un data frame vide~ feuille de calcul 
    sim <- data.frame() 
    essai<-TailleEssai 
    for (r in seq(repetitionMin,repetitionMax,step)){ 
    df <- data.frame(r,essais(essai,r)) 
    sim <-rbind(sim,df) 
    } 
    return(sim) 
} 

NRepetition <-500 
Nessais <- 300 


fp<-frequencePile(NRepetition) 
print (fp) 
essai1 <-essais(Nessais,NRepetition) 

#### Effet repetition sur la fluctuation #### 
TailleEssai<-200 
repetitionMin<-10 
repetitionMax<-500 
repetitionPas<-10 
simPF <- effetRepvsFluct(repetitionMin,repetitionMax,repetitionPas,TailleEssai) 
colnames(simPF)<-c("répétition","fréquence") 

plot(simPF) 

,我想繪製箱線圖作爲參數的函數。我有一個數據幀:

str(simPF) 
'data.frame': 10000 obs. of 2 variables: 
$ répétition: num 10 10 10 10 10 10 10 10 10 10 ... 
$ fréquence : num 0.6 0.4 0.5 0.3 0.1 0.3 0.5 0.7 0.3 0.3 ... 

當頻率ploted不重複的大小,我得到: freq vs number of toss 如何有箱線,而不是點?下面的想法失敗了:

boxplot(simPF[2]~simPF[1], simPF) 
Erreur dans model.frame.default(formula = simPF[2] ~ simPF[1], data = simPF) : 
    invalid type (list) for variable 'simPF[2]' 

回答

2

使用[[而不是[

boxplot(simPF[[2]]~simPF[[1]]) 

在一個列表或數據幀,[將返回另一個列表或數據幀,就像[在向量將返回另一個向量。

str(simPF[1]) 
# 'data.frame': 10000 obs. of 1 variable: 
# $ répétition: num 10 10 10 10 10 10 10 10 10 10 ... 

在另一方面[[將來自數據幀返回的列表的單個元件或單列。

str(simPF[[1]]) 
# num [1:10000] 10 10 10 10 10 10 10 10 10 10 ... 

您收到錯誤信息,因爲你在一個數據幀(的[的結果),而不是矢量通過。

更重要的是,只使用列的名稱:

boxplot(fréquence~répétition, simPF)