R語言前身是S語言,S語言是由AT&T Bell實驗室的Rick Becker、John Chambers、Allan Wilks開發(fā)的一種用于進行數(shù)據(jù)探索拌消、統(tǒng)計飯呢西、作圖的解釋性語言安券。
最初S語言的實現(xiàn)版本主要是S-PLUS墩崩,S-PLUS是一個商業(yè)軟件,基于S語言由MathSoft公司的統(tǒng)計科學(xué)部進一步完善侯勉。R語言最初由新西蘭大學(xué)的Ross Ihaka和Robert Gentleman開發(fā)鹦筹。因為R語言是基于S語言的一個GUN項目,所以也可以當(dāng)作S語言的一種實現(xiàn)址貌,通常使用S語言編寫的代碼可不不做修改地在R語言環(huán)境下運行铐拐。
R語言是一套開源的數(shù)據(jù)分析解決方案徘键,幾乎可以獨立完成數(shù)據(jù)處理、數(shù)據(jù)可視化遍蟋、數(shù)據(jù)建模吹害、模型評估等工作,而且可以完美配合其它工具進行數(shù)據(jù)交互會虚青。具體來說它呀,R語言具有以下優(yōu)勢:
- R語言作為一種GNU項目開放了全部源代碼,用戶可以免費下載使用和修改棒厘。
- R語言可以運行在多種平臺上纵穿,包括Windows、UNIX奢人、MacOS谓媒。
- R語言可以輕松地從各種類型的數(shù)據(jù)源導(dǎo)入數(shù)據(jù),包括文本文件何乎、數(shù)據(jù)管理系統(tǒng)句惯、統(tǒng)計系統(tǒng)乃至Hadoop、Spark等支救,同樣可以將數(shù)據(jù)輸出并寫入這些系統(tǒng)中抢野。
- R語言內(nèi)置多種統(tǒng)計學(xué)及數(shù)據(jù)分析功能,因為有S的血緣搂妻,所以R語言比其它統(tǒng)計學(xué)或數(shù)學(xué)專用的變成語言有更強大的面向?qū)ο蟮墓δ堋?/li>
- R語言擁有頂尖的制圖能力蒙保,不僅包括lattcie包辕棚、ggplot2包對復(fù)雜數(shù)據(jù)進行可視化欲主,更有rCharts包、recharts包逝嚎、plotly包實現(xiàn)數(shù)據(jù)交互可視化扁瓢,甚至可以利用功能強大的shiny包實現(xiàn)R與Web整合部署,構(gòu)建網(wǎng)頁應(yīng)用补君,幫助不懂CSS引几、HTML的用戶利用R快速搭建自己的數(shù)據(jù)分析APP應(yīng)用。
R語言也存在固有的缺點挽铁,目前主要問題包括
- R語言是一種解釋性語言,和其它編程語言相比,速度略顯慢一些邪锌。隨著硬件和R自身的發(fā)展道偷,這個問題已經(jīng)被慢慢弱化,如果能夠熟練運用向量化運算更扁,可大大提高速度盖腕,使用R內(nèi)置的分析函數(shù)效率高很多赫冬,因為很多函數(shù)都是由C或Fortran編寫的。
- R所有的計算實際是基于內(nèi)存進行的溃列,這就意味著在處理數(shù)據(jù)過程中劲厌,數(shù)據(jù)必須完整地轉(zhuǎn)入內(nèi)存,這在處理小型數(shù)據(jù)是沒有任何問題的听隐,但遇到大數(shù)據(jù)時就會變得很嚴(yán)重补鼻。但是這個問題也得到了一定的解決,利用并行包提升R的性能遵绰,或利用R結(jié)合Hadoop進行大數(shù)據(jù)分析工作辽幌。
- 由于R語言的自由各種包的編寫者來自不同領(lǐng)域,所以一定程度上比較混亂椿访,沒有統(tǒng)一的命名格式乌企,參數(shù)格式不一,源代碼和文檔質(zhì)量良莠不齊成玫。
下載安裝
- 下載地址 https://cran.r-project.org/mirrors.html
- R-3.6.2 Windows版本 https://cloud.r-project.org/bin/windows/base/R-3.6.2-win.exe
- R語言IDE https://rstudio.com/
RStudio
RStudio IDE只能用于R開發(fā)加酵,不能用它編寫其它語言的程序,但能得到一些R特有的功能哭当。RStudio的好處是可以通過瀏覽器遠程執(zhí)行猪腕,可以現(xiàn)在功能強大的服務(wù)器上運行R,然后在手機上遠程訪問而不會損失計算能力钦勘。
Rattle
Rattle是一個用于數(shù)據(jù)挖掘的R的圖形交互界面GUI陋葡,可用于快捷處理常見的數(shù)據(jù)挖掘問題。從數(shù)據(jù)的整理到模型的評價彻采,Rattle給出了完整的解決方案腐缤。Rattle和R平臺量好的交互性,為用戶使用R語言解決復(fù)雜問題開啟了方便之門肛响。Rattle易學(xué)易用岭粤,不要求很多的R語言基礎(chǔ),如今已被廣泛地應(yīng)用于數(shù)據(jù)挖掘?qū)嵺`和教學(xué)之中特笋。
在RStudio中若沒有安裝rattle包則出現(xiàn)下列錯誤
> library(rattle)
Error in library(rattle) : 不存在叫‘rattle’這個名字的程輯包
RStudio安裝rattle包
> install.packages("RGtk2")
Warning message:
package ‘RGtk2’ is not available (for R version 3.6.2 Patched)
基本原因是此包被移除或者你的網(wǎng)根本打不開下載這個包的URL
在RStudio菜單的Tools>Global Options>Packages中剃浇,有一個CRAN mirror選項,沒設(shè)置過的時候自動選擇Global CDN猎物,這是國外的鏡像地址虎囚,下載速度慢且容易發(fā)生上述錯誤,可以下拉選擇China開頭的鏡像網(wǎng)站蔫磨,選一個離自己近的就可以淘讥。
使用biocLite軟件對包進行安裝
> source("http://bioconductor.org/biocLite.R")
#指定一個離你最近的國內(nèi)鏡像
> options(BioC_mirror="http://mirrors.ustc.edu.cn/bioc/")
> biocLite("包名")
> install.packages("rattle", repos="http://rattle.togaware.com")
> library(rattle)
> rattle()
> install.packages("RGtk2")
trying URL 'https://mirrors.tuna.tsinghua.edu.cn/CRAN/bin/windows/contrib/3.6/RGtk2_2.20.36.zip'
Content type 'application/zip' length 16558916 bytes (15.8 MB)
downloaded 15.8 MB
package ‘RGtk2’ successfully unpacked and MD5 sums checked
The downloaded binary packages are in
C:\Users\junchow\AppData\Local\Temp\Rtmp8IyEgQ\downloaded_packages
> install.packages("rattle");
The downloaded binary packages are in
C:\Users\junchow\AppData\Local\Temp\Rtmp8IyEgQ\downloaded_packages
> library(rattle)
Rattle: A free graphical interface for data science with R.
XXXX 5.3.0 Copyright (c) 2006-2018 Togaware Pty Ltd.
鍵入'rattle()'去輕搖、晃動质帅、翻滾你的數(shù)據(jù)适揉。
完成Rattle成功后留攒,Rattle的標(biāo)簽欄會集成數(shù)據(jù)導(dǎo)入、數(shù)據(jù)探索嫉嘀、數(shù)據(jù)檢驗炼邀、數(shù)據(jù)轉(zhuǎn)化、數(shù)據(jù)建模剪侮、模型評估功能拭宁。可通過鼠標(biāo)單擊的方式完成一整套數(shù)據(jù)挖掘工作瓣俯,并利用Log日志查看每個操作的R腳本實現(xiàn)杰标,借此學(xué)習(xí)R語言的代碼規(guī)范及編寫。
快速入門
R語言是區(qū)分大小寫的及時性語言彩匕,程序內(nèi)置的函數(shù)可以滿足基本的數(shù)據(jù)分析需求腔剂。
例如:在命令行提示符后輸入一條指令1+1或一次性執(zhí)行腳本文件中的一組命令。R語言是解釋型語言驼仪,輸入命令后可以實時響應(yīng)掸犬,類似計算器。如果R檢測到輸入的命令行未結(jié)束绪爸,會給出一個提示符+
加號湾碎,提示需要在下一行繼續(xù)輸入未完的命名,直到語法輸入完整為止奠货。不然R會有unexpected end of inport
的錯誤提示介褥。
> 1+
+
> 1+1
[1] 2
標(biāo)準(zhǔn)賦值
R語言的標(biāo)準(zhǔn)賦值符號是<-
也可以使用=
例如:將序列1:10賦予給變量a
> a = 1:10
> a
[1] 1 2 3 4 5 6 7 8 9 10
> a<-1:5
> a
[1] 1 2 3 4 5
例如:計算1到5的算數(shù)平均數(shù),冒號會創(chuàng)建一個從第一個數(shù)字到第二個數(shù)字的序列递惋,每個相隔為1柔滔,計算得到的序列稱為一個矢量。mean是計算算數(shù)平均值的函數(shù)丹墨,括號內(nèi)的向量被稱為函數(shù)的參數(shù)廊遍。
> mean(1:10)
[1] 5.5
help
- 如果想要直到某個函數(shù)或數(shù)據(jù)集的信息可輸入一個問號
?
加上函數(shù)名稱 - 如果想查找某個函數(shù)可輸入兩個問號
??
后跟函數(shù)關(guān)鍵詞
例如:查看中位數(shù)函數(shù)median的幫助文檔
> ?median
> help("median")
> ??median
> help.search("median")
其中?median
相當(dāng)于help("median")
嬉愧,??median
相當(dāng)于help.search("median")
贩挣。
默認(rèn)情況下,help只能查找已經(jīng)加載到內(nèi)存中擴展包的函數(shù)和數(shù)據(jù)没酣。如果想要查找未加載到內(nèi)存擴展包中的函數(shù)和數(shù)據(jù)王财,需要指定help函數(shù)的package參數(shù)所指向的具體包名和將try.all.package
參數(shù)設(shè)置為TRUE
。
例如:查找shiny包中的nunExample函數(shù)
> help("runExample")
No documentation for ‘runExample’ in specified packages and libraries:
you could try ‘??runExample’
> help("runExample", package="shiny")
Error in find.package(if (is.null(package)) loadedNamespaces() else package, :
there is no package called ‘shiny’
> help("runExample", try.all.packages=TRUE)
No documentation for ‘runExample’ in specified packages and libraries:
you could try ‘??runExample’
> ??runExample
appropos
使用appropos函數(shù)可以找出所有名字中含有關(guān)鍵字的函數(shù)裕便,只在載入的包中搜索绒净。
> apropos("plot")
[1] ".rs.api.savePlotAsImage"
[2] ".rs.replayNotebookPlots"
[3] "assocplot"
[4] "barplot"
example
大多數(shù)函數(shù)已經(jīng) 有相應(yīng)的例子幫助了解函數(shù)的工作原理,可以通過example函數(shù)來查看偿衰。
> example("median")
median> median(1:4) # = 2.5 [even number]
[1] 2.5
median> median(c(1:3, 100, 1000)) # = 3 [odd, robust]
[1] 3
data
可通過data函數(shù)查看datasets包中的數(shù)據(jù)集
如果要查看本地安裝包的所有數(shù)據(jù)集可使用命令data(package=.packages(all.available=TRUE)
進行查看
> data(package=.packages(all.available=TRUE))
Warning messages:
1: In data(package = .packages(all.available = TRUE)) :
數(shù)據(jù)機從程序包'base'移到了程序包'datasets'
2: In data(package = .packages(all.available = TRUE)) :
數(shù)據(jù)機從程序包'stats'移到了程序包'datasets'
工作空間
工作空間workspace是當(dāng)前R的工作環(huán)境挂疆,存儲所有用戶定義的對象改览,諸如向量、矩陣缤言、函數(shù)宝当、數(shù)據(jù)框、列表胆萧、模型庆揩、圖形等。
例如:創(chuàng)建對象后查看當(dāng)前工作空間下的對象
安裝rCharts
> install.packages("devtools")
> library(devtools)
載入需要的程輯包:usethis
> install_github('ramnathv/rCharts')
WARNING: Rtools is required to build R packages, but is not currently installed.
Please download and install Rtools custom from http://cran.r-project.org/bin/windows/Rtools/.
Downloading GitHub repo ramnathv/rCharts@master
ramnathv-rCharts-479a4f9/inst/apps/leaflet_chloropleth/data/regions_gcs.js: truncated gzip input
tar.exe: Error exit delayed from previous errors.
Error: Failed to install 'rCharts' from GitHub:
Does not appear to be an R package (no DESCRIPTION)
In addition: Warning messages:
1: In utils::untar(tarfile, ...) :
‘tar.exe -xf "C:\Users\junchow\AppData\Local\Temp\Rtmp8IyEgQ\file64485266372c.tar.gz" -C "C:/Users/junchow/AppData/Local/Temp/Rtmp8IyEgQ/remotes644847884327"’ returned error code 1
2: In system(cmd, intern = TRUE) :
running command 'tar.exe -tf "C:\Users\junchow\AppData\Local\Temp\Rtmp8IyEgQ\file64485266372c.tar.gz"' had status 1
tidyverse
R包是函數(shù)跌穗、數(shù)據(jù)订晌、文檔的集合,是對R基礎(chǔ)功能的擴展蚌吸,學(xué)會如何使用R包才能真正掌握R語言的精華锈拨。tidyverse中的R包有著同樣的數(shù)據(jù)處理與編程理念,他們的設(shè)計從根本上是為了協(xié)同工作羹唠。
安裝tidyverse
> install.packages("tidyverse")
使用library函數(shù)加載R包
> library(tidyverse)
── Attaching packages ─────────────────────────────────────── tidyverse 1.3.0 ──
<U+2713> tibble 2.1.3 <U+2713> dplyr 0.8.3
<U+2713> tidyr 1.0.0 <U+2713> stringr 1.4.0
<U+2713> readr 1.3.1 <U+2713> forcats 0.4.0
<U+2713> purrr 0.3.3
── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
x dplyr::filter() masks stats::filter()
x dplyr::lag() masks stats::lag()
檢查更新
> tidyverse_update()
All tidyverse packages up-to-date
數(shù)據(jù)對象
R語言擁有很多存儲數(shù)據(jù)的對象類型推励,包括向量、矩陣肉迫、數(shù)組验辞、數(shù)據(jù)框、列表喊衫。它們在存儲數(shù)據(jù)的類型跌造、創(chuàng)建方式、結(jié)構(gòu)復(fù)雜度族购,以及用于定位和訪問其中個別元素的標(biāo)記等方面有所不同壳贪。
數(shù)據(jù)類型
R語言中的數(shù)據(jù)類型主要包括數(shù)值型(numeric)、邏輯型(logical)寝杖、日期型(date)违施、字符型(character)、復(fù)數(shù)型(complex)瑟幕、原味性(raw 二進制形式保存數(shù)據(jù))磕蒲。此外可能是缺省值(NA)和空值(NULL)。其中最常用的4種類型分別是數(shù)值型只盹、邏輯型辣往、日期型、字符型殖卑。
對象種存儲的數(shù)據(jù)類型可以使用mode()
函數(shù)進行查看
判別和轉(zhuǎn)換數(shù)據(jù)對象類型的函數(shù)
數(shù)據(jù)類型 | 判別函數(shù) | 轉(zhuǎn)換函數(shù) |
---|---|---|
數(shù)值型(numeric) | is.numeric() | as.numeric() |
字符型(character) | is.character() | as.character() |
邏輯型(logical) | is.logical() | as.logical() |
整數(shù)型(integer) | is.integer() | as.integer() |
復(fù)數(shù)型(complex) | is.complex() | as.complex() |
空值(NULL) | is.null() | as.null() |
R語言數(shù)據(jù)對象的基本屬性是長度和類型屬性站削,可使用length()
函數(shù)讀取對象的長度,通過mode()
函數(shù)讀取對象的類型孵稽。
向量vector
- R語言最基礎(chǔ)的數(shù)據(jù)對象是向量许起,向量是以一維數(shù)組的方式管理數(shù)據(jù)十偶。
- 多數(shù)情況下都會使用長度大于1的向量,可使用
c()
函數(shù)(combine 合并)和對應(yīng)參數(shù)來創(chuàng)建一個向量园细。 - 向量的數(shù)據(jù)類型可以是字符型扯键、邏輯型(TRUE/T、FALSE/F)珊肃、數(shù)值型荣刑、復(fù)數(shù)型。
- 向量的長度是含有元素的個數(shù)伦乔,可使用
length()
函數(shù)進行讀取厉亏。
例如:創(chuàng)建數(shù)值型向量
> (v<-c(1,2,3,4,5,6,7))
[1] 1 2 3 4 5 6 7
> mode(v)
[1] "numeric"
> length(v)
[1] 7
例如:創(chuàng)建字符型向量
> (v = c("hello", "world"))
[1] "hello" "world"
> mode(v)
[1] "character"
> length(v)
[1] 2
例如:創(chuàng)建邏輯型向量
> (v<-c(TRUE, FALSE, T, F))
[1] TRUE FALSE TRUE FALSE
> mode(v)
[1] "logical"
> length(v)
[1] 4
- 向量的元素必須具有相同數(shù)據(jù)類型,若不是則會強行執(zhí)行類型轉(zhuǎn)換烈和。
例如:數(shù)值型 + 字符型 = 字符串
> v1 = c(1,2,3)
> v2 = c("a", "b", "c")
> v = c(v1, v2)
> v
[1] "1" "2" "3" "a" "b" "c"
> mode(v)
[1] "character"
> length(v)
[1] 6
例如:數(shù)值型 + 邏輯型= 數(shù)值型
> v1 = c(1,2,3)
> v2 = c(T,F,T)
> v = c(v1, v2)
> v
[1] 1 2 3 1 0 1
> mode(v)
[1] "numeric"
> length(v)
[1] 6
例如:字符型 + 邏輯型 = 字符型
> v1 = c("a", "b", "c")
> v2 = c(T, T, F)
> v = c(v1, v2)
> v
[1] "a" "b" "c" "TRUE" "TRUE"
[6] "FALSE"
> mode(v)
[1] "character"
> length(v)
[1] 6
向量運算
R語言是矢量化語言爱只,其中最強大之一的函數(shù)的向量化,意味著操作會自動應(yīng)用于向量的每個元素招刹,而無需遍歷恬试。
例如:創(chuàng)建1~10序列組成的向量,對向量種每個元素進行開方根疯暑。
> v = seq(1:10)
> (round(sqrt(v), 2))
[1] 1.00 1.41 1.73 2.00 2.24 2.45 2.65 2.83 3.00 3.16
向量的四則運算
例如:向量相加
> rm(list = ls())
> v1 = c(1,2,3)
> v2 = c(1.1, 2.2, 3.3)
> (v1+v2)
[1] 2.1 4.2 6.3
- 如果向量的長度不同則R語言會利用循環(huán)規(guī)則重復(fù)較短的向量元素训柴,直到得到向量長度于較長向量的長度相同。
> rm(list = ls())
> (v1 <- c(1,2,3,4,5,6,7))
[1] 1 2 3 4 5 6 7
> (v2 <- c(10, 20))
[1] 10 20
> (v <- v1 + v2)
[1] 11 22 13 24 15 26 17
Warning message:
In v1 + v2 :
longer object length is not a multiple of shorter object length
警告:長對象的長度不是短對象長度的整數(shù)倍
生成數(shù)列
R語言中使用冒號:
自動生成增量為1或-1的數(shù)列
例如:生成1到10增量為1的等差數(shù)列
> rm(list = ls())
> 1:10
[1] 1 2 3 4 5 6 7 8 9 10
例如:生成10到1增量為-1的等差數(shù)列
> 10:1
[1] 10 9 8 7 6 5 4 3 2 1
對于增量不為1的數(shù)列可使用seq()
序列函數(shù)生成
seq(from=1, to=1, by=((to-from) / (length.out-1)), length.out=NULL, along.with=NULL, ...)
參數(shù) | 描述 |
---|---|
from | 等差數(shù)列的首項數(shù)值妇拯,默認(rèn)為1幻馁。 |
to | 等差數(shù)列的尾項數(shù)值,默認(rèn)為1越锈。 |
by | 等差數(shù)值 |
length.out | 產(chǎn)生向量的長度仗嗦,可簡寫為len |
如果只給出首項和尾項數(shù)據(jù)則等差數(shù)值by將自動匹配為1或-1
> seq(1, 10)
[1] 1 2 3 4 5 6 7 8 9 10
> seq(10, 1)
[1] 10 9 8 7 6 5 4 3 2 1
> seq(0, -10)
[1] 0 -1 -2 -3 -4 -5 -6 -7 -8 -9 -10
如果給出首項和尾項以及長度則會自動計算等差數(shù)值
> seq(1, 10, length.out=5)
[1] 1.00 3.25 5.50 7.75 10.00
> seq(1, 10, length.out=4)
[1] 1 4 7 10
如果給出首項和等差數(shù)值和長度則會自動計算尾項
> seq(1, by=2, length.out=10)
[1] 1 3 5 7 9 11 13 15 17 19
重復(fù)數(shù)列
R語言中的rep()
函數(shù)為重復(fù)函數(shù)可將向量重復(fù)若干次
rep(x, time=1, each=1, length.out=1)
參數(shù) | 描述 |
---|---|
x | 預(yù)重復(fù)的序列 |
times | 重復(fù)次數(shù) |
each | 設(shè)置向量元素先重復(fù)的次數(shù) |
length.out | 設(shè)置重復(fù)數(shù)列的長度,可簡寫為len |
> rep(1:3)
[1] 1 2 3
> rep(1:3, times=2)
[1] 1 2 3 1 2 3
> rep(1:3, each=2)
[1] 1 1 2 2 3 3
> rep(1:3, c(2, 1, 2))
[1] 1 1 2 3 3
> rep(1:3, times=2, len=4)
[1] 1 2 3 1
如果設(shè)置的長度大于數(shù)列長度則會以循環(huán)補齊的方式補全
> rep(1:3, times=2, len=8)
[1] 1 2 3 1 2 3 1 2
字母序列
R語言中的letters和LETTERS函數(shù)可用于生成26個英文字母的小寫和大寫字符序列
> letters
[1] "a" "b" "c" "d" "e" "f" "g" "h" "i" "j" "k" "l" "m" "n"
[15] "o" "p" "q" "r" "s" "t" "u" "v" "w" "x" "y" "z"
> LETTERS
[1] "A" "B" "C" "D" "E" "F" "G" "H" "I" "J" "K" "L" "M" "N"
[15] "O" "P" "Q" "R" "S" "T" "U" "V" "W" "X" "Y" "Z"
向量索引
R語言中若需要訪問向量中部分或個別元素可通過在向量名稱后跟方括號[]
中添加向量索引的方式來實現(xiàn)甘凭。
- 向量的初始位置為1
- 向量索引會根據(jù)元素在向量中的位置挑選中元素
- 向量索引為負(fù)數(shù)表示排除向量中相應(yīng)位置的元素并返回其它位置的元素
- 可使用向量索引來選擇多個元素
- 可使用邏輯向量條件選擇元素
- 可使用表達式選擇元素
例如:從5個隨機數(shù)中挑選出位置為1稀拐, 3, 5的三個元素
> rm(list = ls())
> set.seed(1234)
> x = rnorm(5)
> x
[1] -1.2070657 0.2774292 1.0844412 -2.3456977 0.4291247
> x[c(1,3,5)]
[1] -1.2070657 1.0844412 0.4291247
例如:從5個隨機數(shù)中刪除第1丹弱、第2德撬、第3個
> rm(list = ls())
> set.seed(1234)
> (x = rnorm(5))
[1] -1.2070657 0.2774292 1.0844412 -2.3456977 0.4291247
> x[c(-1, -2, -3)]
[1] -2.3456977 0.4291247
例如:保留首位刪除中間
> rm(list = ls())
> set.seed(1234)
> (x = rnorm(5))
[1] -1.2070657 0.2774292 1.0844412 -2.3456977 0.4291247
> x[c(T,F,F,F,T)]
[1] -1.2070657 0.4291247
禁止混合使用正負(fù)值
> rm(list = ls())
> set.seed(1234)
> (v = rnorm(5))
[1] -1.2070657 0.2774292 1.0844412 -2.3456977 0.4291247
> v[c(1, -2)]
Error in v[c(1, -2)] : only 0's may be mixed with negative subscripts
例如:提取所有整數(shù)的元素
> rm(list = ls())
> set.seed(1234)
> (v = rnorm(5))
[1] -1.2070657 0.2774292 1.0844412 -2.3456977 0.4291247
> v>0
[1] FALSE TRUE TRUE FALSE TRUE
> v[v>0]
[1] 0.2774292 1.0844412 0.4291247
R語言中的which()
函數(shù)將返回邏輯向量中為真的位置
例如:找出向量中大于50的元素的索引位置
-
sample()
函數(shù)用于對序列繼續(xù)寧無放回隨機抽取多個元素組成向量 -
which()
函數(shù)用于從邏輯向量中獲取條件為真的元素的索引位置 -
which.min()
函數(shù)用于從邏輯向量中獲取元素最小值的索引位置 -
which.max()
函數(shù)用于從邏輯向量中獲取元素最大值的索引位置
> rm(list = ls())
> set.seed(1234)
> (v = sample(1:100, 10))
[1] 28 80 22 9 5 38 16 4 86 90
> which(v>50)
[1] 2 9 10
> which.min(v)
[1] 8
> which.max(v)
[1] 10
矩陣maxtrix
R語言中利用矩陣matrix
描述二維數(shù)組,矩陣和向量相似蹈矮,其內(nèi)部元素可以是實數(shù)砰逻、復(fù)數(shù)鸣驱、字符泛鸟、邏輯值等數(shù)據(jù)。
矩陣matrix
使用兩個下標(biāo)來訪問元素踊东,比如m[i,j]
表示矩陣m中第i行第j列的數(shù)據(jù)北滥。
R語言中使用matrix()
函數(shù)以向量形式輸入矩陣中的元素刚操,使用ncol
和nrow
屬性設(shè)置矩陣的列數(shù)和行數(shù),從而創(chuàng)建一個矩陣再芋。
> rm(list = ls())
> set.seed(1234)
> (v = sample(1:100, 16))
[1] 4 100 21 40 84 56 67 93 5 66 47 97 96 48 3 41
> (m = matrix(v, nrow=4, ncol=4))
[,1] [,2] [,3] [,4]
[1,] 4 84 5 96
[2,] 100 56 66 48
[3,] 21 67 47 3
[4,] 40 93 97 41
默認(rèn)舉證是按列填充菊霜,若需按行填充則需設(shè)置byrow
參數(shù)為真。
> (v = seq(1:10))
[1] 1 2 3 4 5 6 7 8 9 10
> (m = matrix(v, ncol=5, nrow=2, byrow=T))
[,1] [,2] [,3] [,4] [,5]
[1,] 1 2 3 4 5
[2,] 6 7 8 9 10
數(shù)組 array
R語言中利用array
描述多維數(shù)組济赎,多維數(shù)組有一個特征屬性叫做dim維數(shù)向量鉴逞,dim維數(shù)向量的長度是多維數(shù)組的維數(shù),dim內(nèi)的元素對應(yīng)維度的長度司训。矩陣只是數(shù)組的特殊情況构捡,因為它只具有兩個維度。