我写了一小笔硬币投币:
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 ...
当频率按重复大小绘制时,我得到: 如何使用boxplot而不是积分?以下想法失败了:
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]'
答案 0 :(得分: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)