如何学习R语言

  • 1. 入门了解

    • R 能干啥?为啥要学R?

      • 强大的数据分析工具及各种扩展包
      • 高通量的数据处理能力
    • Rstudio(强大的R 编辑器,极大降低了R语言学习难度)

    • 安装R & Rstudio

    • 安装R包

      • install.package() #
      • BiocManager::install() #
      • devtool() #
    • R包的使用

      • >library(“pheatmap”) ##调用程序包,程序包必须被调用才能使用
      • >require(“pheatmap”) ##调用程序包,程序包必须被调用才能使用
      • >update.packages("pheatmap")## 升级程序包
      • >detach("pheatmap")
    • R的各种打开方式 #[https://mp.weixin.qq.com/s?__biz=MzI5NjUyNzkxMg==&mid=2247484507&idx=1&sn=295454a59613bfd977f407958bec787e&scene=21]

      • Revolution R Enterprise (windows)
      • tinn-R (windows)
      • rattle (linux)
      • RKWard( 基于QT)
      • JGR(基于JAVA)
      • Eclipse
      • Red-R(专门用于编辑R分析流程)
      • AirXCell(基于Web界面)
      • Emacs
      • Vim
      • textMate
      • sublime
      • radian(21世纪的R终端,基于Python)
      • VSCode(非常现代化,有很好的扩展生态)
      • Rstudio-server(在浏览器打开服务器上的R,界面与Rstudio一样)
      • Rcode
  • 2. 如何学习R

    • 公众号/简书 /博客

      • github 软件开发者的聚集地# https://github.com/
      • Y叔 biobabble公众号(R语言大神,写过多个R包,让我仰视的存在)
      • 生信技能树公众号(创始人jimmy是生信技能树论坛的创始人,励志让10万人学会生信,内容也是干货满满)
      • 果子学生信公众号/简书(生信技能树成员)
      • 徐洲更hoptop -简书(生信技能树成员)
      • 生信媛公众号
      • 生信菜鸟团博客 # http://www.bio-info-trainee.com/
      • 简书——简书上也有许多其他学友写的一些很好的文章,需要知道什么内容也可以在上面搜索。
    • 使用swirl包学习

    • 查看帮助文档

      • Tab键补全:及查看函数的简要说明,当不记得完整函数名或者参数时,使用Tab键能解决你的问题。
      • ?+函数名:查看函数的说明文档,了解函数的功能及参数。
      • ??pheatmap 在线看帮助文档
      • CRAN https://cran.r-project.org/other-docs.html
    • 论坛

    • 视频、播客

    • 其他方式:百度or谷歌or必应or......
  • 3. R基础语法

    • R中的基本概念:

      • Experession # 表达式;
      • Object # 对象;
      • Function # 函数;
      • operator # 符号;
      • Attributes# 属性 ,对象的特征
    • R语言的符号

      • 注释符:# “#”所有右边的内容为说明,或者注释(包括#)
      • 赋值符:<- 或者= 表示 变量赋值 ,assignment operator
      • 连续符: # 用于创制整数型序列 eg. 1:3 表示1,2,3数学运算 运算后给出数值结果
      • 运算符:+,加; -,减; ,乘; /,除; ^ ,幂;%% 取模(整除…余数) ;%/% 整除;%%,矩阵乘积
      • 比较运算: 运算后给出判别结果 (TRUE FALSE):> #大于, < #小于, <= #小于等于, >= #大于等于 , == #等于, != 不等于
      • 逻辑运算 与、或、非:! # NOT, & , && # AND, |, || # OR
    • 对象# Object 的类型:
      • 数值型 Numeric 如 100, 0, -4.335 Inf#无穷大 NaN# Not a Number
      • 字符型 Character 如“ China”
      • 逻辑型 Logical 如 TRUE, FALSE
      • 整数型 Integer 1
      • 因子型 Factor 表示不同类别
      • 复数型 Complex 如: 2 + 3i
      • NA # 表示缺省
      • 数据类型相关函数:
        • >class(x) ##返回变量x的数据类型
        • >as.numeric(X) ## 将x的数据类型改为数值型
        • >as.logical(X)## 将x的数据类型改为逻辑型
        • >as.character(x)## 将x的数据类型改为字符型
        • >factor() ##用来创建因子
        • >unclass() ## 去除对象的类型
        • >is.na() ##检测是否有缺省NA ###NA values have a class also, so there are integer NA , character NA, etc.
        • >is.nan() ## 检测是否有NaN ###A NaN value is also NA but the converse is not true
        • >complete.cases() # 判断多个向量的缺失值的位置取并集
    • 对象的数据结构

      • 向量 (vector)一系列元素的组合。
      • 因子 (factor)因子是一个分类变量,如 “a”,”a”,” a”,”a”,”b”,” b”,”b”,”c”,” c”
      • 数组 (array)数组是k维的数据表。
      • 矩阵 (matrix)矩阵是数组的一个特例,维数k = 2。
      • 数据框 (dataframe)是由一个或几个向量和(或)因子构成,它们必须是等长的,但可以是不同的数据类型。
      • 列表 (list)列表可以包含任何类型的对象。
      • 数据结构相关函数:

        • >vector() ##创制一个向量eg. >vector("numeric", length = 10) #创制一个长度为10的数值型向量,向量值缺省,缺省值为0
        • >matrix(1:6, nrow = 2, ncol = 3) ##创建一个矩阵,2行,3列,内容为1-6.
        • >dim() ##返回对象的维度属性
        • >list() ##用来创建list list 具有类似[[1]]的Index。
        • >data.frame(foo = 1:4, bar = c( T, T, F, F)) ##创建一个数据框
        • >nrow(x) # 返回对象x的行数
        • >ncol(x) #返回对象x的列数
        • >name(x) # 返回为x的变量名
        • >dimname(x) # 为x对象的维度命名
        • >attributes() #返回对象属性
      • Subsetting #取子集

        • [ # by 用单层方括号来提取向量,列表,因子和矩阵的数据子集,你也可以用-号加括号内的值来剔除你不需要的元素,矩阵的数据按行或者按列可以看成是数字索引,
        • [[ # is used to extract elements of a list or a data frame; it can only be used to extract a single element and the class of the returned object will not necessarily be a list or data frame.
        • $ # 根据名字用于 list or data frame中提取元素 ;在一定程度上美元符号和双层中括号的用途一样。
        • Tips:
          • 当只去矩阵的一组数据时,会返回一个向量. 如果不希望改变数据类型,可以在取子集时设置参数 drop = FALSE.
          • [[ 默认使用精确匹配,$ 允许使用局部匹配,使用参数exact = FALSE 在[[ 中进行局部匹配。
          • 也可以采用逻辑判断来对数据子集进行操作
          • 使用attach函数可以帮助我们在处理多变量数据框时频繁使用$索引。
    • 函数 #function: 函数的调用方法, 函数名 +(arguments)

      • > getwd() #查看当前R 工作的空间目录
      • >setwd() ## 设定工作目录
      • >dir() #当前工作目录下的文件
      • >print() ##在屏幕上打印
      • >set.seed(100)##该命令的作用是设定生成随机数的种子,种子是为了让结果具有重复性。#100,的意思为编号,不是数字, 而是应该理解成“编号为一零零的随机数发生”, 下一次再模拟可以采用二零零(200)或者(111)等不同的编号都行。
      • >t() ##实现数据框的行列转换
      • >rnorm(x) ##生成x个随机数
      • >rm() # 或者remove 用于移除对象
      • >ls() # 列出当前所有的变量
      • >str() #展示对象、函数、变量的内部结构列表。
  • 4. 数据的操作

    • 数据读取

      • >read.table;#最常用的读取数据函数
        • 重要的argument参数有:
        • file, 文件名
        • header,是否有表头,header=T #表示将数据的第一行作为标题。
        • sep, 指定分隔符sep=“\t” #表示以Tab键为列分割。
        • colClasses, 给数据指定类型
        • nrows, 指定读取的行数,提高内存利用率。
        • comment.char, 指定注释行的标识,如果没有注释行,设置comment.char=“”
        • skip, 指定跳过哪些行。
        • stringsAsFactors, should character variables be coded as factors?
        • row.names=1 #表示第一列为行名称
      • >read.csv, for reading tabular data,默认:sep=","
      • >readLines, for reading lines of a text file
      • >source, for reading in R code files (inverse of dump )
      • >dget, for reading in R code files (inverse of dput )
      • >load, for reading in saved workspaces
      • >unserialize, for reading single R objects in binary form
    • 数据输出保存

      • > write.table(data,“newdata.txt“,sep=“\t”)
      • >writeLines
      • >dump # dump 保留了元数据,输出单个对象 与dget 匹配
      • >dput # 输出多个对象,与source 匹配。
      • >save
      • >serialize
      • >pdf(“heatmap.pdf”) # 新建一个pdf文件,0 kb,之后的绘图会存入heatmap.pdf .pdf文件是矢量图,不考虑像素。
      • 但是必须保存后才能看
      • >png( “heatmap.png”,width=480,height=480)# 可以输出为 png格式,但需要确定像素。
      • >dev.off() # 保存并退出
    • 与外界的连接 通过文件

      • >file,#建立与一个文件的连接,注意,不是打开文件。
      • >gzfile,# 建立与"*.gz"文件的连接a file compressed with gzip
      • >bzfile,# 建立与"*.bz2"文件的连接a file compressed with bzip2
      • >url, # 建立与网页文件的连接a webpage
    • 数据操作

      • 赋值: <- 或 = 给变量赋值
      • c() # 用于创制向量
      • rbind(a,b) # 将a、 b按行合并为矩阵
      • cbind(a,b) # 将a、 b按列合并为矩阵
      • rep() # 生成一组重复值
    • 循环与条件判断
      • if(){ }else { }# testing a condition
      • for (){} # execute a loop a fixed number of times
      • while ( ) # execute a loop while a condition is true
      • repeat #initiates an infinite loop ,The only way to exit a repeat loop is to call break. #break the execution of a loop
      • next: #skip an interation of a loop
      • return: #exit a function
      • which()
    • 运行脚本
      • > source(" regression.r") # 通过source()函数运行
      • 通过R 脚本编辑器运行 # 路径:文件 > 运行 R脚本文件 > 选择 "regression.r“
      • 直接粘贴到R控制台 ctrl+c, ctrl+v
  • 5. R数据可视化

    • ggplot2
  • 6. R数据分析

    • tidyverse
    • 数据计算:
    • 统计检验:

暂时总结了这么多,还在学习中……

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

推荐阅读更多精彩内容