实验报告二答案
15 16
65.62500 72.00000
>A<-data.frame(a)
>A
Name Sex Age Height
1AliceF 13 56.5
2 Becka F 13 65.3
3 Gail F 14 64.3
4 Karen F 12 56.3
ห้องสมุดไป่ตู้5 Kathy F 12 59.8
6 Mary F 15 66.5
[4,] 0.5810063
>A.cor<-cor(A)
>A.cor
[,1] [,2] [,3]
[1,] 1.0000000 -0.1175698 0.8717538
[2,] -0.1175698 1.0000000 -0.4284401
[3,] 0.8717538 -0.4284401 1.0000000
head(mydata)
>edit(df)
name height weight BMI level
1 a 160 100 0.2 1
2 b 161 98 0.3 1
3 c 162 102 0.2 1
4 d 162 100 0.5 1
5 e 163 105 0.6 1
6 f 164 100 0.6 2
7 g 165 104 0.3 2
[2,] -0.0424340 0.1899794 -0.3296564
[3,] 1.2743154 -0.3296564 3.1162779
[4,] 0.5162707 -0.1216394 1.2956094
[,4]
[1,] 0.5162707
[2,] -0.1216394
[3,] 1.2956094
7 Sandy F 11 51.3
8SharonF 15 62.5
9 Tammy F 14 62.8
10 Alfred M 14 69.0
11 Duke M 14 63.5
12 Guido M 15 67.0
13 James M 12 57.3
14 Jeffrey M 13 62.5
15 John M 12 59.0
>a<-read.table("E:/R/user.txt",head=TRUE)
>a
Name Sex Age Height
1AliceF 13 56.5
2 Becka F 13 65.3
3 Gail F 14 64.3
4 Karen F 12 56.3
5 Kathy F 12 59.8
6 Mary F 15 66.5
(9)列出u中个位数等于3的元素。
>u[u%%10==3]
(10)列出u中个位数等于3的元素的下标位置。
>which(u%%10==3)
(11)给u的每一个元素加上名字,为u1到u100。
>paste("u",1:100,sep=" ")
2、建立一个4*4的矩阵A并求出其特征值、特征向量,行列式,QR分解,并对矩阵中每行求均值,标准差,以及标准化。
7、利用R自带的数据iris,研究前四个变量的样本协方差矩阵、样本相关系数矩阵、画出散点图,并把图片保存成pdf格式到C:/Rwork中。并分析变量之间的关系。
>A<-iris[,1:4]
>A.cov<-cov(A)
>A.cov
[,1] [,2] [,3]
[1,] 0.6856935 -0.0424340 1.2743154
16 Philip M 16 72.0
17 Robert M 12 64.8
18 Thomas M 11 57.5
19 William M 15 66.5
>b<-factor(a[[2]])
>bb<-table(b)
>bb
b
F M
9 10
>c<-factor(a[[3]])
>cc<-table(c)
for(i in 1:4){
for(j in 1:j){
p[i,j]<-cor.test(iris[,i],iris[,j])$p.value
}
}
p<0.05
从散点图和相关系数检验知除了变量1 Speal.Length和变量2 Speal.Width相关性不强,其他任意两个变量具有一定的线性相关性。
(3)写出(0, 2)重复10次的向量赋值给x。
>x<-rep(c(0,2),10)
(4)对向量x,选出其元素大于等于0小于1的x的值赋值给y。
>y<-x[x>=0&<=1]
(5)对向量x,选出其元素都等于0的值并赋值给z。
z<-x[x==0]
(6)设u为一个长100的整数向量。比如,u<- floor(10*runif(100))。
apply(A,1,scale)
3、建立一个数据框有15个样本,5个变量,变量分别是name(字符型),身高(数值型),体重(数值型),BMI(体重指数),等级(有序变量,因子),其中有三个等级,前5个为1,中间为2,后五个等级是3.(除了最后的等级变量其他数值自己随便定义)
>df<-data.frame(0)
>cc
c
11 12 13 14 15 16
2 5 3 4 4 1
>d<-tapply(a[[4]],a[[2]],mean)
>d
F M
60.58889 63.91000
>e<-tapply(a[[4]],a[[3]],mean)
>e
11 12 13 14
54.40000 59.44000 61.43333 64.90000
8 h 167 110 0.8 2
9 i 170 115 0.9 2
10 l 165 102 0.2 2
11 j 172 120 0.3 3
12 k 168 105 0.4 3
13 m 180 130 0.6 3
14 n 169 109 0.8 3
15 o 166 110 0.4 3
4、试画出参数为(0,1,0,1,0)的二元正态分布密度函数三维图。
>A<-matrix(1:16,nrow=4,ncol=4)
>eigen(A)
>det(A)
[1] 0
>Aplus<-qr(A)
>for(i in 1:4 ){
+y[i]<-mean(A[i,])
+z[i]<-sd(A[i,])
+x<-scale(A[i,])
+}
或者
apply(A,1,mean)
apply(A,1,sd)
15 16
65.62500 72.00000
>lst<-list(B=bb,C=cc,D=d,E=e)
>lst
$B
b
F M
9 10
$C
c
11 12 13 14 15 16
2 5 3 4 4 1
$D
F M
60.58889 63.91000
$E
11 12 13 14
54.40000 59.44000 61.43333 64.90000
>write.table(x,file="E:/R/user.txt",append=FALSE,sep=" ",eol="\n",s=TRUE,s=FALSE)
write.table(x,file="E:/R/user.txt",append=FALSE,sep="\n",eol="\n",s=TRUE,s=FALSE)
显示u第21到30号元素。
>u <- floor(10*runif(100))
>u[21:30]
(7)把u第31,35,39号元素赋值为0。
>u <- floor(10*runif(100))
>u[c(31,35,39)]<-0
(8)显示u中除了第1号和第50号的元素之外的子集。
>u<-u[-c(1,50)]
7 Sandy F 11 51.3
8SharonF 15 62.5
9 Tammy F 14 62.8
10 Alfred M 14 69.0
11 Duke M 14 63.5
12 Guido M 15 67.0
13 James M 12 57.3
14 Jeffrey M 13 62.5
15 John M 12 59.0
16 Philip M 16 72.0
17 Robert M 12 64.8
18 Thomas M 11 57.5
19 William M 15 66.5
6、把语句x <- floor(2*runif(100))所生成的向量保存到一个文本文件中,数据项分别用空格和换行分隔。
>x<-floor(2*runif(100))
8、对UCI网址的数据读入R中,并显示维数以及前几行。
上面是错误的
读flag.data中数据
mydata<-read.table("/ml/machine-learning-databases/flags/flag.data",sep= ",")