r语言常用函数(一)

来源:互联网 发布:淘宝开网店书籍有用吗 编辑:程序博客网 时间:2024/04/27 14:50

输入ls()或者objects()命令列举出当前内存中的对象

> ls()[1] "x" "y"> objects()[1] "x" "y"

如果不再需要一个对象时,可以通过rm来删除他

> rm(y)

向量是R中最基本的数据对象,所有对象都有模式和长度属性。向量在R中使用c()函数创建

> v<-c(1,2,3,4,5)> v[1] 1 2 3 4 5> length(v)[1] 5> mode(v)[1] "numeric"

一个向量中的所有元素都必须属于相同的模式。如果不是,R将强制执行类型转换。

> v<-c(4,5,6,"Ruby")> mode(v)[1] "character"
所有向量可以包含一个特殊值,即NA,该值代表缺失值:

> u<-c(4,6,NA,2)> u[1]  4  6 NA  2

R允许创建空向量:

> x<-vector()> mode(x)[1] "logical"> length(x)[1] 0

R语言最强大的方面之一就是函数的向量化。函数可以直接对向量的每个元素进行操作。

> x<-c(1,4,9)> sqrt(x)[1] 1 2 3> y<-c(1,2,3)> x+y[1]  2  6 12

如果两个向量的长度不同,R将使用循环规则,重复较短的向量元素,直到得到向量的长度与较长的向量长度相等。如果较长的长度不是较短的长度的整数倍,则会给出警告

> v1<-c(1,2,3,4)> v2<-c(1,2)> v1+v2[1] 2 4 4 6> v1<-c(1,2,3)> v1+v2[1] 2 4 4Warning message:In v1 + v2 :  longer object length is not a multiple of shorter object length
因子:用水平来表示所有可能的取值

> g<-c("f","m","m","m","f","m","f","m","f","f")> g [1] "f" "m" "m" "m" "f" "m" "f" "m" "f" "f"> g<-factor(g)> g [1] f m m m f m f m f fLevels: f m
table()函数也可以用于获取多个因子的交叉表

> table(g)   f,m出现次数为5gf m 5 5 

表示在a中‘a’有4个f,2个m
> a<-factor(c('a','a','j','j','a','a','a','j','a','j'))> table(a,g)   ga   f m  a 4 2  j 1 3
计算列联表的边际和相对频率(参数1表示第一个维度,即每一行的元素个数6,4。参数2表示第二个维度,即每一列的元素个数5,5)

> t<-table(a,g)> margin.table(t,1)aa j 6 4 > margin.table(t,2)gf m 5 5 

每个维度边际和总计的相对概率:

> prop.table(t,1)   ga           f         m  a 0.6666667 0.3333333  j 0.2500000 0.7500000> prop.table(t,2)   ga     f   m  a 0.8 0.4  j 0.2 0.6> prop.table(t)   ga     f   m  a 0.4 0.2  j 0.1 0.3
生成序列:

产生1~100的序列:

x<-1:100> x  [1]   1   2   3   4   5   6   7   8   9  10  11  12  13  14  15  16  17  18  19 [20]  20  21  22  23  24  25  26  27  28  29  30  31  32  33  34  35  36  37  38 [39]  39  40  41  42  43  44  45  46  47  48  49  50  51  52  53  54  55  56  57 [58]  58  59  60  61  62  63  64  65  66  67  68  69  70  71  72  73  74  75  76 [77]  77  78  79  80  81  82  83  84  85  86  87  88  89  90  91  92  93  94  95 [96]  96  97  98  99 100
利用函数seq()生成实数序列:

> seq(-4,1,0.5) [1] -4.0 -3.5 -3.0 -2.5 -2.0 -1.5 -1.0 -0.5  0.0  0.5  1.0> seq(from=1,to=5,length=4)[1] 1.000000 2.333333 3.666667 5.000000> seq(from=1,to=5,length=2)[1] 1 5> seq(from=-2,by=0.2,length=10) [1] -2.0 -1.8 -1.6 -1.4 -1.2 -1.0 -0.8 -0.6 -0.4 -0.2

产生具有某种模式序列的有用函数是rep()函数

> rep(5,10) [1] 5 5 5 5 5 5 5 5 5 5> rep("hi",3)[1] "hi" "hi" "hi"> rep(1:2,3)[1] 1 2 1 2 1 2> rep(1:2,each=3)[1] 1 1 1 2 2 2