1. 数组的维数名字
数组可以有一个属dimnames保存各维的各个下标的名字,缺省时为空。
>x<-matrix(1:6,ncol=2,dimnames=list(c("a","b","c"),c("d","e")),byrow=T)
> x
de
a 1 2
b 3 4
c 5 6
也可以先定义矩阵然后再为dimnames(x)赋值.
> x<-matrix(1:6,3,2)
>dimnames(x)<-list(c("a","b","c"),c("d","e"))
> x
d e
a 1 4
b 2 5
c 3 6
2. apply(x,固定那些维度不变,函数)
>apply(x,1,sum)
a b c
5 7 9
> apply(x,2,sum)
d e
6 15
3. 列表的构造
列表是一种特殊的对象集合,它的元素也有序号区分,但是各元素的类型可以是任意对象,不同元素不鄙视同一类型。元素本身允许是其他复杂数据类型,比如,列表的一个元素也允许是列表。
X<-list(name1=object1,name2=object2,…..)
>x<-list(name="a",wife="b",child=3,childages=c(4,7,9))
>x
$name
[1]"a"
$wife
[1]"b"
$child
[1] 3
$childages
[1] 47 9
>x[["childages"]] 列表元素可以用列表名[[“元素名”]]来引用
[1] 47 9
>x$childages 列表元素的引用
[1] 47 9
>x$name<-”b" 修改列表的元素
>x
$name
[1]"a"
$wife
[1]"b"
$child
[1] 3
$childages
[1] 47 9
listabc<-c(list.a,list.b,list.c) 将几个列表连接起来
4.数据框是R的一种数据结构,它通常是矩阵形式的数据,但矩阵各列是不同类型的,数据框每列是一个变量,每行是一个观测。
>df<-data.frame(
+Name=c("Alice", "Becka", "James","Jeffrey", "John"),
+Sex=c("F", "F", "M", "M","M"),
+Age=c(13, 13, 12, 13, 12),
+Height=c(56.5, 65.3, 57.3, 62.5, 59.0),
+Weight=c(84.0, 98.0, 83.0, 84.0, 99.5)
+ ) 数据框的生成
>df
Name Sex Age Height Weight
1 Alice F 13 56.5 84.0
2 Becka F 13 65.3 98.0
3 James M 12 57.3 83.0
4 Jeffrey M 13 62.5 84.0
5 John M 12 59.0 99.5
>Lst<-list(
+Name=c("Alice", "Becka", "James","Jeffrey", "John"),
+Sex=c("F", "F", "M", "M","M"),
+Age=c(13, 13, 12, 13, 12),
+Height=c(56.5, 65.3, 57.3, 62.5, 59.0),
+Weight=c(84.0, 98.0, 83.0, 84.0, 99.5)
+ )
>x<-as.data.frame(Lst) 将列表转化为数据框
>x
Name Sex Age Height Weight
1 Alice F 13 56.5 84.0
2 Becka F 13 65.3 98.0
3 James M 12 57.3 83.0
4 Jeffrey M 13 62.5 84.0
5 John M 12 59.0 99.5
5. 数据框的引用
> x[1:2,3:5]
Age Height Weight
1 13 56.5 84
2 13 65.3 98
>x$Age
[1] 1313 12 13 12r
>names(x)
[1]"Name" "Sex" "Age" "Height" "Weight"
>rownames(x)<-c("a","b","c","d","e")
>x
Name Sex Age Height Weight
a Alice F 13 56.5 84.0
b Becka F 13 65.3 98.0
c James M 12 57.3 83.0
dJeffrey M 13 62.5 84.0
e John M 12 59.0 99.5
>attach(x) 把数据框中的变量连接到内存中
>r<-Height/Weight
>r
[1]0.6726190 0.6663265 0.6903614 0.7440476 0.5929648
>x$r<-Height/Weight 把r保存到
>x
Name Sex Age Height Weight
a Alice F 13 56.5 84.0 0.6726190
b Becka F 13 65.3 98.0 0.6663265
c James M 12 57.3 83.0 0.6903614
dJeffrey M 13 62.5 84.0 0.7440476
e John M 12 59.0 99.5 0.5929648
detach() 取消连接
6. if/else语句
If(条件1成立) 执行表达式1
If(条件2成立) else 执行表达式2
或则
If(条件1)
表达式1
else if(条件2)
表达式2
else if(条件3)
表达式3
else
表达式4
7.for循环
>n<-4
>x<-array(0,dim=c(n,n))
>for(i in 1:n){
+ for(j in 1:n){
+ x[i,j]<-1/(i+j-1)
+ }
+ }
>x
[,1] [,2] [,3] [,4]
[1,]1.0000000 0.5000000 0.3333333 0.2500000
[2,]0.5000000 0.3333333 0.2500000 0.2000000
[3,]0.3333333 0.2500000 0.2000000 0.1666667
[4,]0.2500000 0.2000000 0.1666667 0.1428571
8.while循环语句
while(条件成立) 执行表达式
>f<-1; f[2]<-1; i<-1
>while (f[i]+f[i+1]<100){
+f[i+2]<-f[i]+f[i+1]
+i<-i+1;
+ }
>f
[1] 1 1 2 3 5 8 13 21 34 55 89