R语言实战笔记-1

前言:
微博参与话题 #给你四年时间你也学不会生信#

R存储数据的结构:
标量、向量、数组、数据库、列表
[图片上传失败...(image-d5b409-1537089118428)]
R处理数据类型(模式):
数值型、字符型、逻辑型(TRUE/FALSE)、复数型(虚数)、和原生型(字节)
将类别型(包括名义型和有序型)变量称为因子(factors)

1. 向量

> a <- c(1, 2, 5, 3, 6, -2, 4) #数值型向量
> b <- c("one", "two", "three") #字符型向量
> c <- c(TRUE, TRUE, TRUE, FALSE, TRUE, FALSE) #逻辑型向量
#单个向量中的数据必须拥有相同的类型或模式

2. 矩阵

矩阵是一个二维数组。只是每个元素都拥有相同的模式(数值型、字符型或逻辑型)。可通过函数matrix创建矩阵。


其中vector包含了矩阵的元素,nrow和ncol来指定行列的维度,选项byrow则表明矩阵应当按行填充(byrow=True)还是按列填充(byrow=False),默认情况下按列填充。dimnames=list()包含了可选的、以字符型向量表示的行名和列名。

> 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)) # 默认按列填充,即byrow=FALSE
> mymatrix
   C1 C2
R1  1 26
R2 24 68

3. 数组

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

Usage
array(data = NA, dim = length(data), dimnames = NULL)
as.array(x, ...)
is.array(x)

data包含数组中的数据,dimensions是一个数值型向量,给出了各个维度下表的最大值,dimnames是可选的,各维度名称标签的列表。

> # Listing 2.3 - Creating an array
> 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

4. 数据框

不同的可以包含不同模式(数值型、字符型)的数据,R中最常处理的数据结构。每一列数据的模式必须唯一,可以将多模式的不同列放到一起组成数据框。

 # Listing 2.4 - Creating a dataframe
> 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[1:2] #第1、2列
  patientID age
1         1  25
2         2  34
3         3  28
4         4  52

attach()、detach()、with()

> attach(mtcars)
> summary(mpg)
   Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
   10.4    15.4    19.2    20.1    22.8    33.9
> plot(mpg,disp)
> plot(mpg, wt)
> detach
#with()以内的对象
> with(mtcars,{ print(summary(mpg))plot(mpg,disp)  plot(mpg, wt) })
   Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
   10.4    15.4    19.2    20.1    22.8    33.9 
#with()以外的对象
> with(mtcars,{ nikeepstats <- summary(mpg) keepstats <<- summary(mpg) })
> nikeepstats
Error: object 'nikeepstats' not found
> keepstats
   Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
   10.4    15.4    19.2    20.1    22.8    33.9 

实例标识符
在R中,可通过数据框操作函数中的rowname选项将对象指定为R中标记各类打印输出和图形中实例名称所用的变量。如:

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

5. 因子

变量可以归结为名义型(疾病类型)、有序型(患病登记)或连续型变量(年龄)。
类别(名义型)变量和有序类别(有序型)变量在R中称为因子(factor)
函数factor()以一个整数向量的形式存储类别值,整数的取值范围是[1……k],同时一个由字符串(原始值)组成的内部向量映射到这些整数上。

> 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, order=TRUE)
> patientdata <- data.frame(patientID, age, diabetes, status)
> str(patientdata)
'data.frame':   4 obs. of  4 variables:
 $ patientID: num  1 2 3 4
 $ age      : num  25 34 28 52
 $ diabetes : Factor w/ 2 levels "Type1","Type2": 1 2 1 1
 $ status   : Ord.factor w/ 3 levels "Excellent"<"Improved"<..: 3 2 1 3
> summary(patientdata)
   patientID         age        diabetes       status 
 Min.   :1.00   Min.   :25.0   Type1:3   Excellent:1  
 1st Qu.:1.75   1st Qu.:27.2   Type2:1   Improved :1  
 Median :2.50   Median :31.0             Poor     :2  
 Mean   :2.50   Mean   :34.8                          
 3rd Qu.:3.25   3rd Qu.:38.5                          
 Max.   :4.00   Max.   :52.0 

函数factor()可为类别型变量创建值标签。

patientdata$gender <- factor(patientdata$gender, levels = c(1,2) labels =c("male","female"))

6. 列表

列表是一种特别的对象集合,它的元素也由序号(下标)区分,但是各元素的类型可 以是任意对象,不同元素不必是同一类型。元素本身允许是其它复杂数据类型,比如,列表 的一个元素也允许是列表。

> 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"

数据对象处理函数:

length(object)  #显示对象中元素/成分个数,length("")=1
dim(object) #显示某个对象维度,行数与列数
names(object)   #显示对象中各元素/成分名称 
rm(object1,object2,...) #删除一个或者多个对象
nchar(x)    #计算字符串x的长度,对于非字符对象不能用该函数,nchar("")=0
tian<-c("asd","ngvie","jfvmsdivk"),nchar(tian)的结果为3 5 9
substr(x,from,stop) #提取或者替换字符向量中的子串,substr(x,2,4)<-tuy
substring(x,first,last=100000L) #对字符串x从first到last截取子字符串
toupper(x)   #大写转换
tolower(x)   #小写转换
rbind():#将两个矩阵或数据框按照行来拼接
cbind():#将两个函数或矩阵按照列来拼接
merge():#用于横向合并两个数据框,通过共有变量连接,若某个数据框中的一条记录在该变量的取值在另一个数据框中不存在,该记录就无法找到连接的对象,因此会被删掉。

参考资料1:R数据结构之矩阵
参考资料2:R语言实战

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,384评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,845评论 3 391
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,148评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,640评论 1 290
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,731评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,712评论 1 294
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,703评论 3 415
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,473评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,915评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,227评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,384评论 1 345
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,063评论 5 340
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,706评论 3 324
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,302评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,531评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,321评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,248评论 2 352

推荐阅读更多精彩内容