R语言入门系列2

时间:2023-02-10 20:02:18

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