R 語言入門

文章來自百度文庫R 語言入門, 略有修改
其中部分參考y叔和生信技能樹jimmy大神的帖子
https://wenku.baidu.com/view/e3515cfd04a1b0717fd5ddc5.html?sxts=1532068903493

R語言的由來

  • R語言是從S語言演變而來的。
  • S語言是二十世紀(jì)70年代誕生于貝爾實(shí)驗(yàn)室,由Rick Becker, John Chambers, Allan Wilks開發(fā)。
  • 基于S語言開發(fā)的商業(yè)軟件Splus,可以方便的編寫函數(shù)、建立模型,具有良好的擴(kuò)展性,取得了巨大成功。
  • 1995年由新西蘭Auckland大學(xué)統(tǒng)計(jì)系的Robert Gentleman和Ross Ihaka,編寫了一種能執(zhí)行S語言的軟件,并將該軟件的源代碼全部公開,這就是R軟件,其命令統(tǒng)稱為R語言。

R包的安裝、卸載和升級

R包的安裝
  1. 普通安裝
install.packsages()

2.bioconductor包安裝

source("http://bioconductor.org/biocLite.R") 
install.packages('hgu133a.db')

3.github包安裝

install.packages("devtools")
devtools::install_github("GuangchuangYu/rvcheck")
  1. 鏡像安裝
library(devtools) 
source("https://bioconductor.org/biocLite.R") 
options("repos" = c(CRAN="https://mirrors.tuna.tsinghua.edu.cn/CRAN/"))
options(BioC_mirror="https://mirrors.ustc.edu.cn/bioc/")  
BiocInstaller::biocLite('hgu133a.db')

3.如何更新R以及RStudio

section1 win用包更新R
install.packages("installr") 
require(installr)
updateR()
section2 ios用包更新R
install.packages('devtools') #assuming it is not already installed
library(devtools)
install_github('andreacirilloac/updateR')
library(updateR)
updateR(admin_password = 'Admin user password')
section3 更新Rstudio
  1. open RStudio
  2. click on “help” and “Check for Updates”
  3. if there are any updates, you will jump >to https://www.rstudio.com/products/rstudio/download/#download
  4. then choose the version you like and click on “download”
  5. click on “RStudio ???-XXX”[where ??? is the version and XXX is your operating system]
  6. it may too slow to download complete, so you should use XUNLEI to download
  7. follow the installation procedure for your operating system
  8. restart RStudio
  9. rejoice
section4 更新全部包

來源如下,致敬y叔

Get the released version from CRAN:

install.packages("rvcheck")

Or the development version from github:

install.packages("devtools")
devtools::install_github("GuangchuangYu/rvcheck")
Examples
update.packages( )
library(rvcheck)
check_r()
check_bioc('ggtree')
check_cran('emojifont')
check_github("guangchuangyu/clusterProfiler")
section5 更新全部包R語言-查看加載包、卸除加載包及安裝包與卸載包

來源文件如下
https://www.cnblogs.com/awishfullyway/p/6633700.html

  • 1、查看已加載的包
(.packages())

注意外面的括號和前面的點(diǎn)不能省。

  • 2、卸除已加載的包

如卸除RMySQL包

detach("package:RMySQL")

注意是卸除,不是卸載,也就是說不是把包從R運(yùn)行環(huán)境中徹底刪除,只是不希望該包被加載使用。

在包使用函數(shù)沖突,檢驗(yàn)函數(shù)依賴時(shí)比較有用。

  • 3、卸載已加載的包

徹底刪除已安裝的包:

 remove. packages(c("pkg1","pkg2") , lib = file .path("path", "to", "library"))
section6 查看已安裝的包及函數(shù)
installed.packages()[,c('Package','Version','LibPath')]

其中c('Package','Version','LibPath') 表示顯示包名、版本、庫路徑信息,若無[,c('Package','Version','LibPath')]參數(shù),則顯示所有信息。

  • 查看某個(gè)包提供的函數(shù)
help(package='TSA')

package參數(shù)為要查看的包的包名。

  • 查看某個(gè)函數(shù)屬于哪個(gè)包
help(函數(shù)名)

在打開的網(wǎng)頁中查看屬于哪個(gè)包。


常用R程序包

  • base- R 基礎(chǔ)功能包
  • stats- R統(tǒng)計(jì)學(xué)包
  • nlme- 線性及非線性混合效應(yīng)模型
  • Graphics- 繪圖
  • lattice- 柵格圖
  • ape- 系統(tǒng)發(fā)育與進(jìn)化分析
  • apTreeshape- 進(jìn)化樹分析
  • seqinr- DNA序列分析
  • ade4- 利用歐幾里得方法進(jìn)行生態(tài)學(xué)數(shù)據(jù)分析
  • cluster- 聚類分析
  • ecodist- 生態(tài)學(xué)數(shù)據(jù)相異性分析
  • mefa- 生態(tài)學(xué)和生物地理學(xué)多元數(shù)據(jù)處理
  • mgcv- 廣義加性模型相關(guān)
  • mvpart- 多變量分解
  • nlme- 線性及非線性混合效應(yīng)模型
  • ouch- 系統(tǒng)發(fā)育比較
  • BiodiversityR - 基于Rcmdr的生物多樣性數(shù)據(jù)分析
  • vegan- 植物與植物群落的排序,生物多樣性計(jì)算

查看幫助文件

  1  help("t.test")
  2  ?t.test
  3  help.search("t.test")
  4  apropos("t.test")
  5   RGui>Help>Html help
  6  查看R包pdf手冊

幫助文件的內(nèi)容

以lm函數(shù)為例:
lm(stats) #函數(shù)名及所在包
Fitting Linear Models # 標(biāo)題
Description #函數(shù)描述
Usage # 默認(rèn)選項(xiàng)
Arguments # 參數(shù)
Details # 詳情
Author(s) # 作者
References # 參考文獻(xiàn)
Examples # 舉例


數(shù)據(jù)表的行與列

image.png

對象的類型

  • 數(shù)值型 Numeric 如 100, 0, -4.335
  • 字符型 Character 如 “China”
  • 邏輯型 Logical 如TRUE, FALSE
  • 因子型 Factor 表示不同類別
  • 復(fù)數(shù)型 Complex 如:2 + 3i

對象的類別

  • 向量(vector) 一系列元素的組合。
  • 因子(factor) 因子是一個(gè)分類變量,如“a”,”a”,”a”,”a”,”b”,”b”,”b”,”c”,”c”
  • 數(shù)組(array) 數(shù)組是k維的數(shù)據(jù)表。
  • 矩陣(matrix) 矩陣是數(shù)組的一個(gè)特例,維數(shù)k = 2。
  • 數(shù)據(jù)框(dataframe) 是由一個(gè)或幾個(gè)向量和(或)因子構(gòu)成,它們必須是等長的,但可以是不同的數(shù)據(jù)類型。
  • 列表(list) 列表可以包含任何類型的對象。
    (據(jù)Paradis, 2005)

運(yùn)算符

數(shù)學(xué)運(yùn)算 運(yùn)算后給出數(shù)值結(jié)果
+, -, *, /, ^
比較運(yùn)算 運(yùn)算后給出判別結(jié)果(TRUE FALSE)
<, >, <=, >=, ==, !=
邏輯運(yùn)算 與、或、非
!, &, &&, |, ||


外部數(shù)據(jù)讀取

最為常用的數(shù)據(jù)讀取方式是用read.table() 函數(shù)或read.csv()函數(shù)讀取外部txt或csv格式的文件。
txt文件,制表符間隔
csv文件,逗號間隔

sep 是函數(shù)的形式參數(shù),多數(shù)情況下, seq 參數(shù)用來指定字符的分隔符號。不僅用在你所提到的輸出,也用在輸入,也用在字符串的合并與拆分上。csv 文件是用逗號分隔的,故而 sep = ",", tsv 文件是用制表符分隔的,故而 sep = "\t"常用的分隔符還有空格 sep = " "

data <- read.table('cancer.txt', header=TRUE)

header=TRUE代表讀入數(shù)據(jù)時(shí)將第一行作為列名(若是FALSE則相反,不使用文件中第一行作為列名),也可以簡寫問header=T(或是header=F)

不用指定sep參數(shù),因?yàn)閞ead.txt函數(shù)默認(rèn)參數(shù)sep='\t'。當(dāng)然愿意的話你也可以指定,那樣的話會顯得有點(diǎn)多余
   一些R程序包(如foreign)也提供了直接讀取Excel, SAS, dbf, Matlab, spss,  systat, Minitab文件的函數(shù)。

data <- read.txt('cancer.csv', header=TURE, sep=',')

必須指定sep=','不指定不會報(bào)錯但是會出現(xiàn)你讀入的數(shù)據(jù)只有一列的情況
data <- read.csv('cancer.txt', header=TURE, sep='\t')
必須指定sep參數(shù)
讀入csv文件
data <- read.csv('cancer.csv', header=TURE)
不強(qiáng)制指定sep參數(shù),因?yàn)槟J(rèn)sep=','
總結(jié):格式一致不指定分隔符,格式不一致必須指定分隔符。

例:

test.data<-read.table("D:/R/test2.txt",header=T)
header=T表示將數(shù)據(jù)的第一行作為標(biāo)題。
read.table(file=file.choose(),header=T) 可以彈出對話框,選擇文件。

從txt文檔讀取數(shù)據(jù)。每一行作為一個(gè)觀測值。每一行的變量用制表符,空格或逗號間隔開。

read.table(”位置”, header=T)
read.csv(”位置”,header=T)
data1<-read.table("d:/t.test.data.txt",header=T)
bmi<- data1$weight/data1$height^2
t.test(bmi, mu=22.5) #t檢驗(yàn)

R函數(shù)調(diào)用及其選項(xiàng)

函數(shù)的調(diào)用方法, 函數(shù)名+() 如 plot(), lm(),并將對象放入括號中,“=”表示設(shè)定參數(shù)。
例如:

boxplot(day~type, data=bac, col="red", xlab="Virus", ylab="days")
day~type,以type為橫軸,day為縱軸繪制箱線圖。
data=bac,數(shù)據(jù)來源bac
col="red",箱線圖為紅色
xlab="Virus", 橫軸名稱為Virus
ylab="days" ,縱軸名稱為days

實(shí)例:從數(shù)據(jù)輸入到單因素方差分析

將三種不同菌型的傷寒病毒a,b,c分別接種于10,9,和11只小白鼠上,觀察其存活天數(shù),問三種菌型下小白鼠的平均存活天數(shù)是否有顯著差異。
a菌株:2, 4, 3, 2, 4, 7, 7, 2, 5, 4
b菌株:5, 6, 8, 5, 10, 7, 12, 6, 6
c菌株:7,11,6, 6, 7, 9, 5, 10, 6, 3, 10

image.png

數(shù)據(jù)讀取,將test1.txt中的內(nèi)容保存到bac中, header=T表示保留標(biāo)題行。

# 將ba數(shù)據(jù)框中的type轉(zhuǎn)換為因子(factor)
bac$type<-as.factor(bac$type) 
ba.an<-aov(lm(day~type, data=bac)) 
summary(ba.an) 
boxplot(day~type,data=bac,col="red")
image.png

三種菌型對小白鼠影響的箱線圖


定義矩陣的維度

x <- 1:12
dim(x) <- c(3,4)
     [,1] [,2] [,3] [,4]
[1,]    1    4    7   10
[2,]    2    5    8   11
[3,]    3    6    9   12
matrix.x <- matrix(1:12,nrow=3,byrow=T)
t(x)#轉(zhuǎn)置
為行或列添加名稱:
row.names()
col.names()

數(shù)據(jù)框的創(chuàng)建

country.data<-cbind(character,numeric,logical)
rbind() # 按行組合成數(shù)據(jù)框
data.frame() #生成數(shù)據(jù)框
d <- data.frame(character,numeric,logical)
head(d) #訪問數(shù)據(jù)的前6行:

列表的創(chuàng)建

列表可以是不同類型甚至不同長度的向量(數(shù)值型,邏輯型,字符型等等)、數(shù)據(jù)框甚至是列表的組合。
list()
例如
list(character,numeric,logical,matrix.x)


對象類型判斷

class()
is.numeric() #返回值為TRUE或FALSE
is.logical()
is.charactor()
is.data.frame()

對象類型轉(zhuǎn)換

as.logical()
as.charactor()
as.matrix()
as.dataframe()

$ 提取
d$intake.pre
[,] 方括號引用
d[,1]; d[5,]

訪問數(shù)據(jù)框內(nèi)的元素

  • 直接調(diào)用數(shù)據(jù)框內(nèi)的列向量
attatch()
detatch()
  • 在函數(shù)內(nèi)部,對數(shù)據(jù)進(jìn)行相應(yīng)調(diào)整
subset()
within()
transform()

條件篩選

條件篩選是先對變量否滿足條件進(jìn)行判斷,滿足為TRUE,不滿足為FALSE。之后再用邏輯值對向量內(nèi)的元素進(jìn)行篩選。

[1] FALSE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE  TRUE  TRUE
intake.pre[intake.pre > 7000]
intake.post[intake.pre > 7000 & intake.pre <= 8000]
intake.pre > 7000 & intake.pre <= 8000

排序

將向量中的元素按照一定順序排列。
sort() 按數(shù)值大小排序

舉例:

 sort(intake$post)
 order() 給出從小到大的出現(xiàn)序號。
 order(intake$post)
 o <- order(intake$post)

在R中,和排序相關(guān)的函數(shù)主要有三個(gè):sort(),rank(),order()。
sort(x)是對向量x進(jìn)行排序,返回值排序后的數(shù)值向量。rank()是求秩的函數(shù),它的返回值是這個(gè)向量中對應(yīng)元素的“排名”。而order()的返回值是對應(yīng)“排名”的元素所在向量中的位置。
下面以一小段R代碼來舉例說明:

> x<-c(97,93,85,74,32,100,99,67)
> sort(x)
[1]  32  67  74  85  93  97  99 100
> order(x)
[1] 5 8 4 3 2 1 7 6
> rank(x)
[1] 6 5 4 3 1 8 7 2

工作空間

ls() 列出工作空間中的對象
rm() 刪除工作空間中的對象
rm(list=ls()) 刪除空間中所有對象
save.image() 保存工作鏡像
sink() 將運(yùn)行結(jié)果保存到指定文件中
getwd() 顯示當(dāng)前工作文件夾
setwd() 設(shè)定工作文件夾

了解工作路徑

  • 1 查看當(dāng)前R工作的空間目錄
    getwd()
  • 2 將R工作的路徑設(shè)置為 d:/data/
    setwd(“d:/data”)

編輯器

R自帶的腳本編輯器
Editplus (www.editplus.com
TinnR (http://www.sciviews.org/Tinn-R/ )
Ultraedit (www.ultraedit.com/
Emacs (www.gnu.org/software/emacs/
Notepad++ 與NpptoR組合
http://notepad-plus.sourceforge.net/
記事本或?qū)懽职?等等


運(yùn)行腳本

三種運(yùn)行方式

  • 1 通過source()函數(shù)運(yùn)行
    source(“d:/regression.r”)
  • 2 通過R腳本編輯器運(yùn)行
    路徑:RGui>File>Open Script #Ctrl+R運(yùn)行
  • 3 直接粘貼到R控制臺
    ctrl+c, ctrl+v

低水平繪圖函數(shù)

lines()  添加線
curve()  添加曲線
abline()  添加給定斜率的線
points()  添加點(diǎn)
segments()  折線
arrows()  箭頭
axis()  坐標(biāo)軸
box()  外框
title()  標(biāo)題
text()  文字
mtext()  圖邊文字
...

高水平繪圖函數(shù)

hist() 直方圖
boxplot() 箱線圖
stripchart() 點(diǎn)圖
barplot() 條形圖
dotplot() 點(diǎn)圖
piechart() 餅圖
interaction.plot() 
matplot()
...

參數(shù)用在函數(shù)內(nèi)部,在沒有設(shè)定值時(shí)使用默認(rèn)值。

font= 字體
lty= 線類型
lwd= 線寬度
pch= 點(diǎn)的類型,
xlab= 橫坐標(biāo)
ylab= 縱坐標(biāo)
xlim= 橫坐標(biāo)范圍
ylim= 縱坐標(biāo)范圍
par()
par(mfrow=c(2,2)
注意:ggplot2中圖形函數(shù)與R基礎(chǔ)圖形函數(shù)有區(qū)別,例如

ggplot2中線寬 size=
ggplot2顏色填充 fil=
col= 為線框的顏色
舉例:

hist(x,freq=F) # 繪制直方圖
curve(dnorm(x),add=T) # 添加曲線
h <- hist(x, plot=F) # 繪制直方圖
ylim <- range(0, h$density, dnorm(0)) #設(shè)定縱軸的取值范圍
hist(x, freq=F, ylim=ylim) #繪制直方圖
curve(dnorm(x),add=T,col="red") #添加曲線

image.png

數(shù)據(jù)保存

sink()
unlink()
若有LaTeX基礎(chǔ),可以用
Sweave() 函數(shù)
該函數(shù)能將腳本、程序說明和運(yùn)算結(jié)果直接保存成.tex文件,用LaTeX編譯成pdf文件。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 《R語言入門》的讀書筆記 本書的重點(diǎn)內(nèi)容及感悟: 第一章 導(dǎo)言 1、R是一個(gè)有著統(tǒng)計(jì)分析功能及強(qiáng)大作圖功能的軟件系...
    格式化_001閱讀 12,687評論 0 9
  • Step1:下載和安裝R Windows和OS X用戶可以從CRAN(Comprehensive R Archiv...
    胡阿白閱讀 2,301評論 0 3
  • 001 什么是數(shù)據(jù)分析:從海量的數(shù)據(jù)中提取出有價(jià)值有意義的信息 002 為什么要進(jìn)行數(shù)據(jù)分析:獲取數(shù)據(jù)報(bào)告,以實(shí)現(xiàn)...
    白馬少年說閱讀 2,423評論 3 3
  • 最近在復(fù)習(xí)python的科學(xué)計(jì)算,突然心血來潮,想看看R的數(shù)據(jù)處理和python的區(qū)別在哪,所以就有了這篇文章。 ...
    若與閱讀 2,190評論 1 24
  • 《光打雷不下雨》 文/心陽 持續(xù)不斷的雷聲 一陣接一陣向窗戶咂來 膽小的孩子嚇得哭喊著 躲進(jìn)媽媽的懷里 雨...
    LT心陽閱讀 292評論 1 4

友情鏈接更多精彩內(nèi)容