1

私はコイントスの小さなシムを書きました:

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)

boxplot をパラメーターの関数としてプロットしたいと思います。私はデータフレームを持っています:

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 ...

繰り返しサイズに対して頻度をプロットすると、次のようになります 頻度 vs 投げる回数 。ポイントの代わりにボックスプロットを使用するには? 次のアイデアは失敗しました。

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]'
4

1 に答える 1

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)
于 2013-09-25T13:09:30.163 に答える