r练习 循环

  1. 使用三种循环,输出向量1:100中所有数据。

for(i in 1:100)

  print(i)

i=1

while (i<=100) {

  print(i)

  i =i+1

}

i=1

repeat{

  if(i<=100)

    print(i)

    i =i+1

  if(i>100)break

}

 

  1. 使用while循环求1+2+3+…+100的和。

#while循环求1+2+3+…+100

sum=0;i=1;

while (i<=100) {

  sum=sum+i

  i=i+1

}

print(sum)

 

  1. 使用repeat循环求1至100之间的奇数和。

#使用repeat循环求1至100之间的奇数和

sum=0;i=1;

repeat{

  if(i%%2!=0)sum =sum+i

  i =i+1

  if(i>100)break

}

print(sum)

 

  1. 使用for循环输出1至100之间的能够被3或5整除的数,并求和。

sum =0

for(i in 1:100){

  if(i%%3==0|i%%5==0){

    print(i)

    sum =sum+i

  }

}

print(sum)

> sum =0

> for(i in 1:100){

+   if(i%%3==0|i%%5==0){

+     print(i)

+     sum =sum+i

+   }

+ }

 

> print(sum)[1] 2418

 

  1. 编写一个R程序,输入一个整数n,如果n≤0,则终止运算,并输出一句话:“要求输入一个正整数”;否则,如果n是偶数,则讲m除2,并赋给n;否则,将3n+1赋给n。不断循环,只到n=1,才停止计算,并输出一句话:“运算成功”。

myfuction<- function(n){

  if(n <= 0)

    print("要求输出一个正整数")

  else{

    repeat{

      if(n == 1)break

      else if(n %% 2 == 0){n <- n/2}

      else n <- 3*n + 1

    }

    print("运算成功")

  }

}

myfuction(0)

myfuction(90)

 

  1. MASS程序包中的数据框road是关于美国各地交通事故死亡人数的数据,请筛选并显示出死亡人数超过2000或者低于200的地区信息。

library(MASS)

road

road[road$deaths>2000|road$deaths<200,]

 

  1. 查看附录中数据: 
  1.  
  2.  
  3.  
  4.  
  5.  
  6.  
    1. 将附录中的数据保存为以“你的名字+你爱豆的名字”csv文件;(截图)

 

    1. 选择并显示高数、线代、概率论三门课成绩都大于等于80的学生成绩信息;

data1=read.csv("苏热巴.csv");data1

data1[data1$高数>=80&data1$线代>=80&data1$概率论>=80,]、

 

    1. 选择并显示三门课至少有一门大于等于90的学生成绩信息。

data1[data1$高数>=90|data1$线代>=90|data1$概率论>=90,]

 

附录:

学号

名字

性别

班级

高数

线代

概率论

1001

Prada

M

1

84

89

96

1002

MiuMiu

F

2

59

49

85

1003

Louis Vuitton

M

2

99

98

100

1004

CELINE

F

1

78

56

71

1005

Chole

F

1

64

61

60

1006

YSL

M

2

32

48

56

 

  1. 利用正态分布函数与指数分布函数随机分别生成两个长度为15的样本,并利用自己定义的函数计算两个样本的T统计量。

n=15

a=rnorm(n);a

b=rexp(n);b

t1<- function(x,y){

  s=((n-1)*var(x)+(n-1)*var(y))/(2*n-2)

  t=(mean(x)-mean(y))/(s*sqrt(2/n))

  print(t)

 

}

t1(a,b)

 

  1. 模拟数据专业学生名单(学号区分),记录高数、线代、概率论、R语言四科成绩,然后进行统计分析。假设有100名学生, 起始学号为160217001,各科成绩取整,高数成绩为正态分布随机数,平均成绩为61分,标准差为7;线代成绩为均匀分布随机数,都在70分以上;概率论成绩为正态分布,平均成绩为65,标准差为19;R语言为均匀分布产生随机数。把正态分布中超过100分的成绩变成100分。

9.1 生成学号;

 

9.2 生成高数成绩

高数成绩要求:高数成绩为正态分布随机数,平均成绩(mean)为61分,标准差(sd)为7;正态分布函数:rnorm(n,mean=0,sd=1)

 

9.3 生成线性代数

线代成绩为均匀分布随机数,都在70分以上;其中n为产生随机值个数(长度),min为最小值,max为最大值;

 

9.4 生成概率论

概率论成绩为正态分布,平均成绩为65,标准差为19;

 

学号=seq(160217001,160217100);学号

高数=round(rnorm(100,mean=61,sd=7));高数

线性代数=round(runif(100,min=70,max=100));线性代数

概率论=round(rnorm(100,mean=65,sd=19));概率论

R=round(runif(100,min=80,max=100));R

概率论[which(概率论>100)]=100

 

9.5 生成R语言

R语言为均匀分布产生随机数.

 

9.6 把上述信息组合程数据框,并写到文本文件中;计算各种指标:平均分,每个人的总分,最高分,最低分分(使用apply函数)

A. 生成文本文件(截图)

x=data.frame(学号,高数,线性代数,R,概率论);x

write.table(x,"mark.txt")

 

 

  1. 打开数据框(截图)

 

  1. 在数据框中命名变量(截图)

 

  1. 计算各种指标:平均分(X 5),每个人的总分(X6),最高分(X7),最低分(X8)

平均分:

x5=apply(x[c("高数","线性代数","R语言","概率论")],1,mean);x5

x6=apply(x[c("高数","线性代数","R语言","概率论")],1,sum);x6

 

x7=apply(x,2,max);x7

x8=apply(x,2,min);x8

 

9.7 将生成成绩写入文本文件中(截图);

x$平均分=x5

x$总分=x6

x$最高分=x7

x$最高低分=x8

write.table(x,"omark.txt",col.names = T,row.names =F,sep = " " )

y=read.table("omark.txt",header = T);y

 

 

9.8 求总分最高的小朋友

 

x$学号[which.max(x6)]

 

  • 3
    点赞
  • 46
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值