R语言入门(二)

本文介绍了R语言中的基本数据结构,包括向量、矩阵、数组、数据框和列表,并提供了丰富的示例来展示如何创建这些数据结构以及如何进行基本的操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

基本数据结构

今天看到一个好的系列博客,在此推荐:http://blog.fens.me/series-r/
这部分主要介绍R语言的几种数据结构。R语言的数据结构为向量、矩阵、数组、数据框、列表。

向量

向量主要是用来存储数值型(1,2,3)、字符型(“abc”,“efg”)或者逻辑型(true、false)数据的一维数组。我们可以用函数c()来创建向量。如下:

> a<-c(1,2,3,3,4,5)
> b<-c("abc","efg")
> c<-c(TRUE,FALSE,TRUE)

这里要注意的是向量和标量的区别:标量是只包含一个元素的向量。
对于我们创建好的向量我们可以采取类似编程语言中数组下标的方式读取,但是这里要注意的是R语言的下标不是从0开始的,而是从1开始的。如下:

> a<-c(1,2,3,3,4,5)
> a[1]
[1] 1

当我们要取一段数值序列时,比如我们要取第二个到第四个数据时我们可以用如下方法:

> a[2:4]
[1] 2 3 3

向量中还有一些常用的函数,像mode(),length(),rbind(),cbind()等等,这里举部分示例:

> x<-c(1:10)
> mode(x)#查看数据类型
[1] "numeric"
> y<-c("a","b")
> mode(y)
[1] "character"
> length(x)#查看长度
[1] 10
> z<-c(11:20)
> z
 [1] 11 12 13 14 15 16 17 18 19 20
> m1<-rbind(x,z)#组合成矩阵
> m1
  [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
x    1    2    3    4    5    6    7    8    9    10
z   11   12   13   14   15   16   17   18   19    20
> m2<-cbind(x,z)
> m2
       x  z
 [1,]  1 11
 [2,]  2 12
 [3,]  3 13
 [4,]  4 14
 [5,]  5 15
 [6,]  6 16
 [7,]  7 17
 [8,]  8 18
 [9,]  9 19
[10,] 10 20

还有一些其他数学运算的函数:mean()、sum()、min()、max()、var()、sd()、prod(),举例如下:

> x<-c(1:100)
> length(x)
[1] 100
> mean(x)#求平均值
[1] 50.5
> sum(x)#求和
[1] 5050
> max(x)#求最大值
[1] 100
> min(x)#求最小值
[1] 1
> var(x)#求方差
[1] 841.6667
> prod(x)#连乘
[1] 9.332622e+157
> sd(x)#求标准差
[1] 29.01149

矩阵

矩阵是一个二维数组,通过函数matrix创建矩阵。关于matrix的具体用法使用help(matrix)查看。下面仅做一些举例了:

> x<-matrix(1:10,nrow=5,ncol=2)#创建一个行为5,列为2的矩阵
> x
     [,1] [,2]
[1,]    1    6
[2,]    2    7
[3,]    3    8
[4,]    4    9
[5,]    5   10
> cells<-c(1,26,24,68)
> rnames<-c("R1","R2")
> cnames<-c("C1","C2")
> mymatrix<-matrix(cells,nrow=2,ncol=2,byrow=TRUE,dimnames=list(rnames,cnames))#创建一个2*2的矩阵,按行排列,同时给行和列命名
> mymatrix
   C1 C2
R1  1 26
R2 24 68

当我们要选中矩阵中行、列或元素时,我们可以如下表示:

> x<-matrix(1:10,nrow=2)#创建一个2*5的矩阵
> x
     [,1] [,2] [,3] [,4] [,5]
[1,]    1    3    5    7    9
[2,]    2    4    6    8   10
> x[2,]#获取矩阵的第二行
[1]  2  4  6  8 10
> x[,2]#获取矩阵的第二列
[1] 3 4
> x[1,c(4,5)]#获取矩阵第一行的第4和5列
[1] 7 9

数组

数组与矩阵是类似的,但是数组的纬度可以大于2,数组使用函数array()来创建。形式如下:
myarray<-array(vector,dimensions,dimnames)
其中vector包含了数组中的数据,dimensions是一个数值型向量,给出了各个维度下标的最大值,dimnames是可选的,给出了各维度名称标签的列表。具体示例如下:

> dim1<-c("A1","A2")
> dim2<-c("B1","B2","B3")
> dim3<-c("C1","C2","C3","C4")
> z<-array(1:24,c(2,3,4),dimnames=list(dim1,dim2,dim3))#创建一个2*3*4的三维数组
> z
, , C1

   B1 B2 B3
A1  1  3  5
A2  2  4  6

, , C2

   B1 B2 B3
A1  7  9 11
A2  8 10 12

, , C3

   B1 B2 B3
A1 13 15 17
A2 14 16 18

, , C4

   B1 B2 B3
A1 19 21 23
A2 20 22 24

数据框

数据框感觉就像数据库里面的表,通过函数data.frame()创建,示例如下:

> patientID<-c(1,2,3,4)
> age<-c(25,34,28,52)
> diabetes<-c("Type1","Type2","Type1","Type1")
> status<-c("Poor","Improved","Excellent","Poor")
> patientdata<-data.frame(patientID,age,diabetes,status)
> patientdata
  patientID age diabetes    status
1         1  25    Type1      Poor
2         2  34    Type2  Improved
3         3  28    Type1 Excellent
4         4  52    Type1      Poor

在数据框中有个新的符号$,它被用来选取一个给定数据框中的某个特定变量,示例如下:

> patientdata$age
[1] 25 34 28 52

列表

列表是R中数据类型最为复杂的一种,某个列表可以包含有若干向量,矩阵,数据框,甚至其他列表的组合。使用函数list()创建列表。示例如下:

> g<-"My First List"
> h<-c(25,26,18,39)
> j<-matrix(1:10,nrow=5)
> k<-c("one","two","three")
> mylist<-list(title=g,ages=h,j,k)
> mylist
$title
[1] "My First List"

$ages
[1] 25 26 18 39

[[3]]
     [,1] [,2]
[1,]    1    6
[2,]    2    7
[3,]    3    8
[4,]    4    9
[5,]    5   10

[[4]]
[1] "one"   "two"   "three"
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值