R语言入门--第一节(基础知识)

1、熟悉语句

  • R的赋值符号为<- ,也可以用 =(但是后者不是标准语法,专业人员不推荐使用,但我觉得=更方便,只要打一个字符毕竟 -.-)

回顾:目前已经改过来了哈,使用<-为主。快捷键Alt加短横键可一次输出,也很方便。

  • 注释由#开头,在它之后的文本都会被忽略(方便打草稿,做记录等等)
x <- rnorm(5)  #即创建了一个名为x的向量对象,包含5个来自标准正态分布的随机偏差

2、一些帮助命令

install.packages("vcd")
data() #列出当前已加载包中所含有的所有可用示例数据集
?dplyr   #关于该包的简介
??mutate    #以mutate为关键词,搜索本地帮助文档 
#mutate是dplyr包的一个函数(包首先要加载),帮助栏左上角可以看出。

3、工作空间的管理

  • 工作目录(work directory)就是用来读取文件和存储运算结果的默认目录
  • 注意:如果需要读入一个不在当前工作目录下的文件,需要调用语句写明完整的路径。记得要加引号!
getwd()  #可以查看当前工作目录
setwd('新路径')  #可更改工作目录位置

options()  #显示当前所有选项
options("repos")    #显示某一特定选项  或者 options()$repos
options("repos" = c(CRAN="https://mirrors.tuna.tsinghua.edu.cn/CRAN/"))    
options(digits=3)  
#修改某一特定选项

history()       #默认显示25条历史命令
savehistory("myhist.R")    #将历史命令保存名为 mylist 的文件(默认保存至工作目录)
loadhistory("myhist.R")     #载入历史命令文件到右上角 history 栏中
#R程序卡住时,点击键ctrl+shfit+esc键,选择你要关闭的程序,结束任务,即可强制关闭程序 

save.image("li.RData")    #保存工作空间到当前会话中
#相当于快照,除了一般退出可以自动保存,也可自己保存一个时间点的工作状态。
save(objectlist,file="temp.Rdata")   #
# object 可以是一个或多个对象,单独保存,而不是整个工作台内容
load("li.RData")         #读取一个工作空间到当前会话中   

4、图形输出命令

  • 一般生成图片则显示在右下角区域,但很多时候需要保存为图片文件。
  • R提供很多格式普适的保存图片命令(一些绘图包也提供自己的下载图片函数)
data("mtcars")
#三步走
png("test.png") #第一步
plot(mtcars$mpg,mtcars$cyl)  #第二步
dev.off()  #第三步
  • 此外还有其它很多格式
jpeg("filename.jpg")   #输出JPEG文件
bmp("filename.bmp")   #输出BMP文件
pdf("filename.pdf")   #输出pdf文件,大图推荐

5、关于R包(package)的常用命令

  • 储存包的目录称为库(library)
  • 使用包的函数之前,先要安装,再要加载
.libPaths()    #显示库所在的位置
library()      #显示库中有哪些包
search()       #显示当前哪些包被加载,可以使用
install.packages("gclus")      #安装包,需要加引号
installed.packages()           #列出安装的包,版本号、依赖关系等信息
library(gclus)                 #使用前需要加载包,不用加引号
update.packages()    #更新包

6、R的数据

6.1 数据框与因子

  • 数据框(data frame)是R中用于常用的存储数据的一种结构:列表示变量,行表示观测。
    因子(factor)是名义型变量或有序型变量,他们在R中被特殊的存储和处理

对象(object)是指可以赋值给变量的任何事物,包括向量、数据结构,函数。

patientID <- c(1, 2, 3, 4) #行/实例标识符(行名),可由函数rownames指定
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)
#创建数据框时,会自动把名义型变量与有序型变量转换为因子,储存为整数型 1、2、3.....
str(patientdata)
1.png
str(diabetes)     #依然发现仍为字符串型
diabetes=factor(diabetes)      #利用factor函数可将字符串转变为因子

如上,将糖尿病类型转换为无序因子类型,如需设置有序型因子,需加ordered =levels = c()两个参数

status=factor(status,ordered = TRUE, levels=c("poor","Improved","Excellent"))     
#levels可以覆盖默认排序(字母排序) ,这对按类别绘图时的顺序很关键。

特殊情况:比如性别变量中用数值型变量0、1表示二分类变量;如需编码为因子,要使用levels和label两个参数
补充:让因子的顺序与初始数据的顺序保持一致,可使用unique()函数,例如f1 <- factor(x1, levels = unique(x1))

gender=c(1,0,0,1,0,1,1,0)
gender <- factor(gender,levels=c(0,1),labels = c("male","female"))
gender

6.2 数据框的取值

patientdata[1:2]   #取第一到二列
patientdata[c("diabetes","status")]
patientdata$age
summary(mtcars$mpg)
plot(mtcars$mpg,mtcars$disp) #比较麻烦
## 两个简便方法
attach(mtcars)      #tips1 "attach"
summary(mpg)
plot(mpg,disp)

detach(mtcars)      #tips2 "with"
with(mtcars,{
    print(summary(mpg))
    plot(mpg,disp)
    })

#删除指定列
patientdata=subset(patientdata,select=-age)
patientdata=patientdata[,-1]  #删除第一列

6.3 向量、矩阵、列表

  • 向量用于储存数值型、字符型,逻辑型的一维数据。使用c() 创建
    注意:单个向量必须拥有相同的数据类型。
a=c(1,6,15,19)
#向量的取值
a[3]
a[c(3,5)]
a[2:6]
  • 矩阵matrix是维数等于2的数组,数据类型也必须一致;这是与data frame表最大的区别。
a=c(1,6,15,19,32,69)
rnames   <- c("R1", "R2")   #行名
cnames   <- c("C1", "C2", "C3")   #列名
mymatrix <- matrix(a, nrow=2, ncol=3, byrow=TRUE,     
                   dimnames=list(rnames, cnames))  
#byrow=TRUE 按行填充,默认为按列填充。


#取值
mymatrix[2,]  #取第二行
mymatrix[,3]  #取第三列
mymatrix[2,3] 
mymatrix[2,c(2,3)]
mymatrix[c(T,F),4] #默认循环
mymatrix[,c(T,T,F,F,F)] # 在大数据时,会比较方便
mymatrix[,c(T,F)]  
  • 列表(list)为一些对象的有序集合,可能是若干向量、矩阵,数据框,甚至其它列表的组合。
#建立列表
mylist <- list(a,b,c,d)   #可为任何数据类型
mylist
mylist[[2]]   #取列表中第二个对象

#灵活创建--为列表元素命名
mylist <- list(title = a,b,c,end = d)
mylist
#可按名寻对象
mylist[["title"]] #mytitle[[1]]
mylist$title  #仅对命名的元素有效

注意列表的取子集方式,list[1]提取的本质还是一个列表;而list[[1]]这种方式会从列表中删除一个层次等级,使用$按名提取也是同样的效果。这个区别很重要~

7、数据导入与初探索

1、 手动输入,适用于小数据输入

mydata <- data.frame()
mydata <- edit(mydata) 
#fix(mydata)

2、 read.table()将带分隔符的文本文件(如逗号为分隔符的CSV文件)转为dataframe格式数据表,从而导入到R中。

mydata=read.table("file.csv",header=TRUE,
                    row.names="nameID",sep=",")
#header=TRUE,表示第一行为列名
#row.names  设置行名;此外col.names也可以单独设置
#修改列名,直接赋值即可
colnames(mydata)=c('Geneid','A1','A2','A3','B1','B2','B3')

分隔符默认为 sep=" " ,代表一个/多个空格,制表符,换行或回车;
sep="\t" 读取使用制表符来分割行内数据

read.table()函数其它常用参数

  • stringsAsFactors 表示字符型向量是否转化为因子,默认是TRUE。处理大数据设置为FALSE便捷
  • skip 用于数据前跳过的行的数目,适用于开头有注释的文件。
  • na.strings将特定字符转为na值,例如na.strings=c("9","?")
  • ?read.table可知还有read.csv等更便捷、直接的方法;
  • 导入excel文件,推荐方式为将excel文件另存为csv文件,再按上述方法导入。
  • 其它方法或导入其它数据目前对于我不常用,不做介绍 P35

补充:相反的,也可把R中的数据框或者矩阵等导出为CSV、excel等格式,方法示例如下:

 #导出逗号分隔符(csv)文本文件
write.table(mydata, "mydata.txt", sep=",") 
# 默认字符串放在引号中的,缺失值用NA表示

#导出excel
#注意该包应该是需要Java环境,因此需要电脑下载安装jdk
library(xlsx)
write.xlsx(mydata, "mydata.xlsx")
# 默认变量名为电子表格头部,行名放在第一列

补充两点:
(1)excel目前有两种常见后缀 .xls.xlsx。可以简单理解后者是前者的升级版。.xls在所有版本office都能打开,而.xlsx只能在2007年以后版本的office才能打开;
(2)一般保存,建议逗号分隔符的.csv格式;而如果是别人给的数据是excel文件,推荐使用readxlR包读取,主要用到三个函数read_excel()read_xls()read_xlsx()

3、使用的数据初探索函数

length()    #显示元素数量
dim()  #维度
str()   #结构
class()   #类型
head()    #前六行,tail则为后六行
ls()    #显示当前对象列表
rm(list=ls())   #清空所有对象

寒假自学R语言的生信小白

教材参考《R语言实战(第2版)》

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

推荐阅读更多精彩内容