R day1 -基本概念操作-2

万地高楼平地起,掌握基本的代码规律和逻辑思维非常重要

每个基本的代码和函数不运行是200次以上,是谈不上掌握的

基本开始运行代码

rm(list=ls())
options(stringsAsFactors = F)

tips

Tab键匹配补全
head(b)取b的前6行,同样有tail()取末6行

基本数据类型

R 有四种基本数据类型,即数值型(numeric)、复数型(complex)、逻辑型(logical)、字符型(character),因子(factor)。
numeric:就是数字【需要注意的是有的虽然看起来是数字,但是被定义成了character或者factor,需要用as.numeric转换】
character:用单引号或者双引号包括起来的字符序列,一般我们称之为字符串。
logical:逻辑型变量,即布尔值,表示“是”与“否”,“真”或“假”。
逻辑型用 TRUE 表示真,FALSE 表示假。也可缩写为 T或者 F,
但需要注意的是,T 和 F不是 R 的保留字,其含义可以被程序改变,因此最好是用 TRUE 和 FALSE,更加规范和安全。
R中的比较运算和逻辑运算都可以产生逻辑型数据。比较运算包括 >,<,>=,<=,==,!=(大于,小于,大于等于,小于等于,等于,不等于)。
逻辑运算包括 &,|,!(与、或、非)。

> 2>3
[1] FALSE
> a=seq(1,20)
> 8>a
 [1]  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
[17] FALSE FALSE FALSE FALSE

factor:应该是最难理解的一个变量类型
在R语言中,因子(factor)可以表示的是一个符号、一个编号或者一个等级,即,一个点。例如,人的个数可以是1,2,3,4......那么因子就包括,1,2,3,4.....
还有统计量的水平的时候用到的高、中、低,也是因子,因为他是一个点。
与之区别的向量,是一个连续性的值,例如,数值中有1,1.1,1.2......可以作为数值来计算,而因子则不可以。

sex<-c("M","F","M","M","F")
factor(sex)
sex.factor<-as.factor(sex)
#使用levels来取得因子中的水平
levels(sex.factor)
# [1] "F" "M"

不太好理解,新手刚开始不太用的上,我现在也不太理解factor,应该是比character多了半个维度的感觉

基本数据结构

无论是数值型(numeric)、逻辑型(logical)、字符型(character),因子(factor)变量都需要用容易来存储,也就是数据结构
R的对象由几种基本数据类型构成:
向量(vector) :一维空间
矩阵(matrix):二维空间,只可以存储数值变量,但是较少用到,
数据框(dataframe):二维空间,可以存储numeric,logical,character,factor型变量,在实际分析工作中用到的最多
数组(array):三维空间,但是极少用到,可以忽略
列表(list):三维空间,可以由多个vactor/matrix/dataframe组成

基本计算

R中可以直接进行基本计算
每一个英文单词都是一个函数
基本所有的计算符号都可以在R中进行直接计算

6+6
6-6
6*6
6/6
6^2
log(6)
mean()
max()
min(x)

创建向量

c( ) 是我们常用来创建向量的函数,c就是create,也可以理解为combind

c("TP53","ERBB2","BRCA1")
c(2,3,4)
c(2:9)
seq(1,3)#默认为整数1
seq(1,3,by=0.5)
a=c(3,4,5,6,7,8),等价于a=3:8或者a=c(3:8)或者a=seq(3,8)
【R中没有唯一的解决代码方案,条条大路通罗马,找出规律,构建个人的思维习惯才是王道】

rep就是replicate重复的意思

rep(1,3)# 【1重复3次】
rep(1:2,3) #【1和2,重复3次】
rep("TP53",3)# 【TP53, 重复3次】
rep(c("TP53","ERBB2","BRCA1"),each=3)#【每个向量重复3次】
rep(c("TP53","ERBB2","BRCA1"),3)#【 重复3次】

seq就是sequence序列

seq(1,3)#默认为整数1 返回值为1,2,3
seq(1,3,by=0.5) by是设定间隔值,返回值为1, 1.5, 2, 2.5, 3
sort(a)#排序
rev(a)#反向排序
table(a)###每个变量的counts
unique(a)####显示变量唯一的数目

sort(a)#排序
sort(a,decreasing = TRUE) #降序排序
order()得到排列的小标用,返回的是每个变量在一维向量中的排序位置编号

每个函数都有很多哑变量可以微调整,参考help文档说明,或者TAB键联想,每个调整参数之间以,分割

判断向量类型

在预算中如果报错,那就需要check元素类型是否不支持,as.xxxx函数可以帮助把数据变成指定类型或状况。
class()查看数据类型
str()查看数据结构
dim()查看数据维度

is.data.frame()返回TRUE or FALSE逻辑向量
as.character()可以帮助把数据变成字符型数据(加双引号“”的变量)

构建matrix

a<-matrix(1:20,nrow = 4,ncol =5 )
a<-matrix(1:20, 4,5 )
a<-matrix(1:20, 4)
#三者等同

构建data.frame

a<-data.frame(a=seq(1,5),b=seq(6,10))

data.frame的行和列数目必须一致,并且行名不能重复,列名可以重复

提取数据

对于向量,由于是一维结构,可以直接a[3],取向量中第3个数值
对于矩阵和数据框,由于是二维结构,需要指定二位结构
a[2,3]取数据框中的第2行、第三列的数值

data.frame默认是列为单位
可以对列进行直接操作
例如a是数据框变量
mean(a[,1])、mean(a$1) 可以直接求a的第一列的均值
但是mean(a[1,])却不可以直接求a的某一行的均值
需要先转换后在计算
mean(as.numeric(a[1,]))
如果添加行,则将改变所有的列。如果重新赋值,可以将a改成数据框类型。如果没有重新赋值,则不改变a的类型。依次类推,还有as.xxx等系列函数

对list进行操作

list是三维结构,所以需要进行三维定位
例如a是list变量
a[1]则得到列表中的第一个列表,进行一次降维
a[[1]] 得到第一元素,进行了二次降维
有时候两种方法得到的结果看起来是一样的,可是使用class查看数据类型后发现,其实[[]]之后已经对数据进行了二次降级,变成了元素。

数据框取索引

通常我们想提取数据框中的指定行或者指定列
一般有两种简单提取思维
1)提取目标变量所在下标值(可以理解为坐标,例如第几行)
举例
a<-data.frame(sample=rep(c("tumor","sample"),4),age=seq(1:8))


要求1,提取sample为tumor的数据

我可以找到sample列=tumor的行号

b<-a$sample=="tumor"

注意==是逻辑判断符号,所以返回的是逻辑性变量


image.png

然后直接导入编辑变量

tumorsample<-a[b,]
image.png

也可以一步代码

tumorsample<-a[a$sample=='tumor',]
a<-seq(1,100)
a>2 #返回的是逻辑变量
a[a>2]#返回的是向量变量,自动过滤掉FALSE变量

体会下不同

文件读取和保存

read.table('文件名', header = T,sep = '\t' )
read.csv('文件名', header = T )
write.table(a,file = "aa")
write.csv (a,file = "aa")

重命名

重命名行名
rownames(b)<-
colname(b)<-

尚不完善,持续更新ing

感谢jimmy和他的生信菜鸟团家族

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

推荐阅读更多精彩内容