第一天学习R语言

学习R语言第一天

2.2.1向量

a <- c(1, 2, 5, 3, 6, -2, 4)
b <- c("one", "two", "three")
c <- c(TRUE, TRUE, TRUE, FALSE, TRUE, FALSE)

2.2.2矩阵


#创建矩阵
y<-matrix(1:20,nrow=5,ncol = 4)#创建一个5x4的矩阵
y
##创建一个2x2含标签的矩阵
cells<-c(1,24,26,68)
rnames<-c("R1","R2")
cnames<-c("C1","C2")
mymatrix<-matrix(cells,nrow = 2,ncol = 2,byrow = TRUE,dimnames=list(rnames,cnames))#按行填充的2x2矩阵
mymatrix
mymatrix1<-matrix(cells,nrow = 2,ncol = 2,byrow = FALSE,dimnames=list(rnames,cnames))#按列填充的2x2矩阵
mymatrix1


#矩阵下标的使用
x<-matrix(1:10,nrow = 2)
x
x[2,]#选择第2行
x[,2]#选择第2列
x[1,2]#选择第一行第二列的元素

2.2.3数组

数组(array)与矩阵类似,但维度可以大于2。

#创建一个数组
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))
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

2.2.4 数据框

数据框中不同的列可以包含不同模式的数据。
数据框可通过函数data.frame()创建:
mydata <- data.frame(col1, col2, col3,……)
其中的列向量col1、col2、col3等可为任何类型(如字符型、数值型或逻辑型)。每一列的名称可由函数names指定。

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

#选取数据框中的元素
patientdate[1:2]

#输出
  patientID age
1         1  25
2         2  34
3         3  28
4         4  52
#选取diabetes和status两列元素
patientdata[c("diabetes","status")]
#输出
  diabetes    status
1    Type1      Poor
2    Type2  Improved
3    Type1 Excellent
4    Type1      Poor

记号"$"被用来选取一个给定数据框中的某个特定变量。例如,如果你想生成糖尿病类型变量diabetes和病情变量status的列联表,使用以下代码即可:

table(patientdata$diabetes,patientdata$status)
#输出
        Excellent Improved Poor
  Type1         1        0    2
  Type2         0        1    0

1.attach()、detach()和with()

函数attach()可将数据框添加到R的搜索路径中。R在遇到一个变量名以后,将检查搜索路径中的数据框。
以第一章中mtcars数据框为例:

summary(mtcars$mpg)
plot(mtcars$mpg, mtcars$disp)
plot(mtcars$mpg, mtcars$wt)

可以改成

attach(mtcars)
 summary(mpg)
 plot(mpg, disp)
 plot(mpg, wt)
detach(mtcars)#函数detach()将数据框从搜索路径中移除。

当名称相同的对象不止一个时,这种方法的局限性就很明显了。

> mpg<-c(25,36,47)
> attach(mtcars)
The following object is masked _by_ .GlobalEnv:

    mpg

The following objects are masked from mtcars (pos = 3):

    am, carb, cyl, disp, drat, gear, hp, mpg, qsec, vs, wt

> plot(mpg,wt)
Error in xy.coords(x, y, xlabel, ylabel, log) : 
  'x' and 'y' lengths differ
> mpg
[1] 25 36 47

这里,在数据框mtcars被绑定(attach)之前,你们的环境中已经有了一个名为mpg的对象。在这种情况下,原始对象将取得优先权,这与你们想要的结果有所出入。由于mpg中有3个元素而disp中有32个元素,故plot语句出错。函数attach()和detach()最好在你分析一个单独的数据框,并且不太可能有多个同名对象时使用。任何情况下,都要当心那些告知某个对象已被屏蔽(masked)的警告。
除此之外,另一种方式是使用函数with()。可以这样重写上例:

with(mtcars, {
 print(summary(mpg))
 plot(mpg, disp)
 plot(mpg, wt)
})

花括号{}之间的语句都针对数据框mtcars执行,这样就无需担心名称冲突了。如果仅有一条语句(例如summary(mpg)),那么花括号{}可以省略。
函数with()的局限性在于,赋值仅在此函数的括号内生效。
如果你需要创建在with()结构以外存在的对象,使用特殊赋值符<< - 替代标准赋值符(<-)即可,它可将对象保存到with()之外的全局环境中。这一点可通过以下代码阐明:

> with(mtcars, {
+   nokeepstats <- summary(mpg)
+   keepstats <<- summary(mpg)
+ })
> nokeepstats
Error: object 'nokeepstats' not found
> keepstats
   Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
  10.40   15.43   19.20   20.09   22.80   33.90 

**2.实例标识符

patientdata<-data.frame(patientID,age,diabetes,status,row.names = patientID)

2.2.5因子

变量可归结为名义型、有序型或连续型变量。
类别(名义型)变量和有序类别(有序型)变量在R中称为因子(factor)。

因子在R中非常重要,因为它决定了数据的分析方式以及如何进行视觉呈现。
函数factor()以一个整数向量的形式存储类别值,整数的取值范围是[1……k](其中 k 是名义型变量中唯一值的个数),同时一个由字符串(原始值)组成的内部向量将映射到这些整数上。
例如:

名义型变量

#创建一个向量
diabetes<-c("Type1","Type2","Type1","Type1")
#使用factor函数转变
diabetes<-factor(diabetes)

将此向量储存为(1,2,1,1),并且在内部将其关联为1=Type1,2=type2。

有序型变量

需要为函数factor()指定参数ordered=TRUE。针对向量diabetes进行的任何分析都会将其作为名义型变量对待,并自动选择适合这一测量尺度的统计方法。

status<-c("Poor","Improved","Excellent","Poor")
#使用factor函数转变
status<-factor(status,ordered=TRUE)

将此向量储存为(3,2,1,3)。另外,针对此向量进行的任何分析都会将其作为有序型变量对待,并自动选择合适的统计方法。

因子的水平默认依字母顺序创建。也可以通过指定levels选项来覆盖默认排序。
例如:

status<-factor(status,ordered=TRUE,levels=c("Poor","Improved","Excellent"))

各水平复制将为1=Poor,2=Improved,3=Excllent。
请保证指定的水平与数据中的真实值相匹配,因为任何在数据中出现而未在参数中列举的数据都将被设为缺失值。

数值型变量

数值型变量也可以通过levels和labels来编码成因子。

#男性被编码成1,女性被编码成2
sex<-factor(sex,levels=c(1,2),labels=c("Male","Female"))

因子的使用

patientID <-c(1,2,3,4)
age <- c(25,34,28,52)
diabetes<-c("Type1","Type2","Type1","Type1")
status<-c("Poor","Improved","Excellent","Poor")
diabetes <- factor(diabetes)
status<-factor(status,ordered=TRUE)
patientdata <-data.frame(patientID,age,diabetes,status)
str(patientdata)#显示对象的结构

summary(patientdata)#显示对象的统计概要

2.2.6 列表

列表是R的数据类型中最为复杂的一种。一般来说,列表就是一些对象(或成分,component)的有序集合。可以使用函数list()创建列表。

mylist <- list(object1,object2,......)

其中对象可以是前面的任何结构。
还可以为列表中的对象命名:

mylist <- list(name1=object1,name2=object2,......)
#创建一个列表
g <- "My First List"
h <- c(25,42,26,39)
j <- matix(1:10,nrow=5)
k <- c("one","two","three")
mylist <- list(tltle=g,ages=h,j,k)#创建列表
mylist#输出整个列表
mylist[[2]]#输出第二个成分
mylist[["ages"]]#输出ages成分
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值