none=0
over=0
sum=0
for(i in 1:1000){
A=1:n #代表1到n号人
B=1:n #代表1到n号帽
num=0#有num个人得到自己的帽子
max=n
for(j in 1:n-1){
rand=round(runif(2,min=1,max=max)) #产生2个随机数,取整
people=rand[1]
hat=rand[2]
if(A[people]==B[hat]){
num=num+1
}
A<-A[-people] #删除走的人
B<-B[-hat] #删除掉已拿走的帽子
max=max-1 #随机数最大值减一
}
if(num==0)none=none+1
if(num>0)over=over+1
sum=sum+num/n
}
c(
over/1000, #至少有1个人拿到了自己帽子的概率
none/1000, #没有一个人拿到自己帽子的概率
sum/1000 #得到自己帽子的概率
您好,最近初学R语言,在R语言读入EXCEL数据格式文件的问题上遇到了困难,经过在网上搜索解决了这一问题,下面归纳几种方法,供大家分享:第一:R中读取excel文件中的数据的路径:
假定在您的电脑有一个excel文件,原始的文件路径是:D:\work\data\1
如果直接把这个路径拷贝到R中,就会出现错误,原因是:
\是escape character(转义符),\\才是真正的\字符,或者用/
因此,在R中有两种方法读取该路径:
1:在R中输入一下路径:D:\\work\\data\\1
2:在R中输入一下路径:D:\\work\\data\\1
第二:R中读取excel文件中的数据的方法:
read.table(),read.csv(),read.delim()直接读取EXCEl文件时,都会遇到一下问题:“在读取‘.xls’的TableHeader时遇到不完全的最后一行”。解决的方法有以下几种:假如文件1.1中是一个6乘以2的矩阵,元素为:
123
224
325
426
527
628
方法1:xls另存为csv格式然后用read.csv:
具体过程如下:
>data<-read.csv("D:\\work\\data\\1.csv")
>data
X1 X23
1 2 24
2 3 25
3 4 26
4 5 27
5 6 28
>data<-read.csv("D:\\work\\data\\1.csv",header = F)
>data
V1V2
1 1 23333
2 224
3 325
4 426
5 527
6 628
>data<-read.csv("D:\\work\\data\\1.csv",header = T)
>data
X1 X23333
1 2 24
2 3 25
3 4 26
4 5 27
5 6 28
也就是说header = T(TURE)是默认的状态,在这默认状态下,输出的data矩阵是一个5乘以2的矩阵,第一行作为了data的名字,如果header = F(FALSE),则会现实原始的矩阵结果。