R語言入門筆記(2) - R語言科學(xué)計算

R語言科學(xué)計算

分類統(tǒng)計

  • mean(),求平均值
  • min()现柠,求最小值
  • sd()裆赵,求標(biāo)準(zhǔn)差

數(shù)組和矩陣

數(shù)組與矩陣的維數(shù)

用dim函數(shù)來定義向量空間的維數(shù)。
例:

> my_num <- c(1:10)
> dim(my_num) <- c(2,5)
> my_num
     [,1] [,2] [,3] [,4] [,5]
[1,]    1    3    5    7    9
[2,]    2    4    6    8   10

切片

索引向量

array函數(shù)

array函數(shù)根據(jù)維數(shù)參數(shù)生成多維數(shù)組之剧,它的參數(shù)主要有兩個郭卫,第一個是需要形成數(shù)組元素的數(shù)據(jù),第二個是dim參數(shù)提示維度背稼。
例:

> h1 <- c(1:20)
> mya1 <- array(h1, dim=c(4,5))
> mya1
     [,1] [,2] [,3] [,4] [,5]
[1,]    1    5    9   13   17
[2,]    2    6   10   14   18
[3,]    3    7   11   15   19
[4,]    4    8   12   16   20

數(shù)組轉(zhuǎn)換為向量

as.vector函數(shù)可將數(shù)組轉(zhuǎn)換為向量贰军。
例:

> x4 <- array(c(1:10), dim=c(2,5))
> x4
     [,1] [,2] [,3] [,4] [,5]
[1,]    1    3    5    7    9
[2,]    2    4    6    8   10
> as.vector(x4)
 [1]  1  2  3  4  5  6  7  8  9 10

matrix矩陣

使用matrix函數(shù)可創(chuàng)建矩陣,主要參數(shù)為:data表示構(gòu)造所需數(shù)據(jù)蟹肘,nrow為行數(shù)词疼,ncol為列數(shù),byrow表示是否按行順序分配元素帘腹,默認(rèn)為FALSE寒跳。
例:

> matrix(c(1:10),2,5,TRUE)
     [,1] [,2] [,3] [,4] [,5]
[1,]    1    2    3    4    5
[2,]    6    7    8    9   10
> matrix(c(1:10),2,5)
     [,1] [,2] [,3] [,4] [,5]
[1,]    1    3    5    7    9
[2,]    2    4    6    8   10

對角矩陣

通過diag函數(shù)可生成和分析對角矩陣。如果參數(shù)為一維數(shù)組竹椒,則將參數(shù)視為對角線元素童太,并生成對角矩陣。

例:

> a1 = c(1:10)
> diag(a1)
      [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
 [1,]    1    0    0    0    0    0    0    0    0     0
 [2,]    0    2    0    0    0    0    0    0    0     0
 [3,]    0    0    3    0    0    0    0    0    0     0
 [4,]    0    0    0    4    0    0    0    0    0     0
 [5,]    0    0    0    0    5    0    0    0    0     0
 [6,]    0    0    0    0    0    6    0    0    0     0
 [7,]    0    0    0    0    0    0    7    0    0     0
 [8,]    0    0    0    0    0    0    0    8    0     0
 [9,]    0    0    0    0    0    0    0    0    9     0
[10,]    0    0    0    0    0    0    0    0    0    10

數(shù)組運(yùn)算

數(shù)組四則運(yùn)算

+, -, * 運(yùn)算,每個元素分別進(jìn)行书释。

向量連接

向量連接指的是將兩個向量通過某種規(guī)律連接成一個數(shù)組翘贮。R語言的cbind和rbind函數(shù)可進(jìn)行向量連接。
概略地說爆惧,cbind() 把矩陣橫向合并成一個大矩陣(列方式)狸页,而rbind()
是縱向合并(行方式)。
在命令中

> X <- cbind(arg 1 , arg 2 , arg 3 , ...)

cbind() 的參數(shù)要么是任何長度的向量扯再,要么是列長度一致的的矩陣(即行數(shù)一樣)芍耘。結(jié)果將是一個合并arg1 , arg2 , . . . 的列形成的矩陣。
如果cbind() 的參數(shù)中有一些比其他矩陣參數(shù)的列長度短的向量熄阻,它們將會被循環(huán)使用以吻合矩陣的列長度(在沒有矩陣的情況下斋竞,吻合其中最長向量的長度)。
函數(shù)rbind() 對行進(jìn)行類似的操作秃殉。其中任何向量參數(shù)都會被當(dāng)作行向量且可能被循環(huán)使用坝初。
假定X1 和X2 有一樣的行數(shù)。下面的命令會把它們的列合并以得到矩陣X钾军,同時要求起始列都是1.

> X <- cbind(1, X1, X2)

rbind() 或者cbind() 返回值常常是矩陣形式鳄袍。因此,cbind(x)rbind(x) 可能是把向量x 分別轉(zhuǎn)換成列或者行矩陣最簡單的方法吏恭。

> x2 <- c(101:105)
> x1 <- c(1:10)
> cbind(x1,x2)
      x1  x2
 [1,]  1 101
 [2,]  2 102
 [3,]  3 103
 [4,]  4 104
 [5,]  5 105
 [6,]  6 101
 [7,]  7 102
 [8,]  8 103
 [9,]  9 104
[10,] 10 105
> rbind(x1,x2)
   [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
x1    1    2    3    4    5    6    7    8    9    10
x2  101  102  103  104  105  101  102  103  104   105

矩陣運(yùn)算

矩陣連接

R語言的cbind函數(shù)完成矩陣的橫向連接拗小,rbind函數(shù)完成矩陣的縱向連接。
例:

> x3 <- matrix(c(1:10),2,5)
> x4 <- matrix(c(101:105),2,5)
> x3
     [,1] [,2] [,3] [,4] [,5]
[1,]    1    3    5    7    9
[2,]    2    4    6    8   10
> x4
     [,1] [,2] [,3] [,4] [,5]
[1,]  101  103  105  102  104
[2,]  102  104  101  103  105
> cbind(x3,x4)
     [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
[1,]    1    3    5    7    9  101  103  105  102   104
[2,]    2    4    6    8   10  102  104  101  103   105
> rbind(x3,x4)
     [,1] [,2] [,3] [,4] [,5]
[1,]    1    3    5    7    9
[2,]    2    4    6    8   10
[3,]  101  103  105  102  104
[4,]  102  104  101  103  105

矩陣轉(zhuǎn)置

R語言的t函數(shù)可完成矩陣轉(zhuǎn)置計算
例:

> h <- c(1:10)
> array(h, dim=c(2,5)) -> mya
> mya
     [,1] [,2] [,3] [,4] [,5]
[1,]    1    3    5    7    9
[2,]    2    4    6    8   10
> t(mya)
     [,1] [,2]
[1,]    1    2
[2,]    3    4
[3,]    5    6
[4,]    7    8
[5,]    9   10

相對t函數(shù)而言樱哼,用aperm函數(shù)進(jìn)行矩陣轉(zhuǎn)置更靈活哀九。aperm有兩個常用的參數(shù),第一個參數(shù)是需要轉(zhuǎn)置的矩陣唇礁,第二個參數(shù)perm指示新矩陣相對于第一個參數(shù)矩陣的維度下標(biāo)勾栗。
比如,將行轉(zhuǎn)換為列盏筐,將列轉(zhuǎn)換為行围俘,將行列次序更換,將第一維的元素與第二維的元素互換琢融,則將perm設(shè)為c(2,1).
例:

> aperm(mya,perm=c(2,1)) -> myb
> myb
     [,1] [,2]
[1,]    1    2
[2,]    3    4
[3,]    5    6
[4,]    7    8
[5,]    9   10
> mya1 <- array(mya,c(2,2,5))
> mya1
, , 1

     [,1] [,2]
[1,]    1    3
[2,]    2    4

, , 2

     [,1] [,2]
[1,]    5    7
[2,]    6    8

, , 3

     [,1] [,2]
[1,]    9    1
[2,]   10    2

, , 4

     [,1] [,2]
[1,]    3    5
[2,]    4    6

, , 5

     [,1] [,2]
[1,]    7    9
[2,]    8   10

> myb1 <- aperm(mya1,perm=c(2,1,3))
> myb1
, , 1

     [,1] [,2]
[1,]    1    2
[2,]    3    4

, , 2

     [,1] [,2]
[1,]    5    6
[2,]    7    8

, , 3

     [,1] [,2]
[1,]    9   10
[2,]    1    2

, , 4

     [,1] [,2]
[1,]    3    4
[2,]    5    6

, , 5

     [,1] [,2]
[1,]    7    8
[2,]    9   10

矩陣乘積

若A為mn矩陣界牡,B為nr矩陣,則它們的乘積AB(有時記做AB)會是一個mr的矩陣漾抬。矩陣乘積使用%*%操作符進(jìn)行計算宿亡。
例:

> a2 <- array(c(1:10),dim=c(2,5))
> b2 <- t(a2)
> a2 %*% b2
     [,1] [,2]
[1,]  165  190
[2,]  190  220

內(nèi)積運(yùn)算

向量外積

向量的外積是矩陣的克羅內(nèi)克積的特殊情況,而克羅內(nèi)克積是張量積的一種特殊情況纳令。

> b1 <- array(c(1:4))
> a1 <- array(c(5:6))
> b1 %o% a1
     [,1] [,2]
[1,]    5    6
[2,]   10   12
[3,]   15   18
[4,]   20   24
> a1 %o% b1
     [,1] [,2] [,3] [,4]
[1,]    5   10   15   20
[2,]    6   12   18   24
> b2 <- array(c(1:4))
> a2 <- array(c(5:8))
> b2 %o% a2
     [,1] [,2] [,3] [,4]
[1,]    5    6    7    8
[2,]   10   12   14   16
[3,]   15   18   21   24
[4,]   20   24   28   32

此外挽荠,還可以使用outer(a,b,'*')替代%o%運(yùn)算符進(jìn)行外積運(yùn)算.

向量內(nèi)積

向量內(nèi)積以實數(shù)R上定義的兩個向量為運(yùn)算對象克胳,返回一個實數(shù)標(biāo)量值,屬于二元運(yùn)算圈匆,它是歐基里得空間的標(biāo)準(zhǔn)內(nèi)積漠另。
R語言通過corssprod函數(shù)完成向量內(nèi)積運(yùn)算.
例:

> a3 <- c(1:3)
> b3 <- c(4:6)
> crossprod(a3,b3)
     [,1]
[1,]   32

矩陣內(nèi)積

矩陣內(nèi)積的計算方式相當(dāng)于第一個參數(shù)的轉(zhuǎn)置乘以第二個參數(shù),就是前面提到的矩陣乘積跃赚。除了使用%*%操作符外笆搓,還可以使用crossprod函數(shù)完成矩陣內(nèi)積計算。

求解線性方程組

一般通過solve函數(shù)來求解 a %*% x = b中的x向量值纬傲。求解線性方程組僅使用solve函數(shù)的前兩個參數(shù)满败,第一個a為系統(tǒng)矩陣,第二個b為常數(shù)項叹括,當(dāng)b缺失時算墨,默認(rèn)為單位矩陣。

> b10
     [,1]
[1,]    8
[2,]    9
> a10
     [,1] [,2]
[1,]    1    3
[2,]    2    4
> solve(a10,b10)
     [,1]
[1,] -2.5
[2,]  3.5

矩陣求逆

通過solve函數(shù)可進(jìn)行矩陣求逆計算领猾,只指定1個參數(shù)(待求逆的矩陣)即可米同。
例:

> a10
     [,1] [,2]
[1,]    1    3
[2,]    2    4
> solve(a10)
     [,1] [,2]
[1,]   -2  1.5
[2,]    1 -0.5

矩陣的特征值求解

R語言通過eigen函數(shù)可求解特征值骇扇。

> a11 <- array(c(1:16),dim=c(4,4))
> a11
     [,1] [,2] [,3] [,4]
[1,]    1    5    9   13
[2,]    2    6   10   14
[3,]    3    7   11   15
[4,]    4    8   12   16
> eigen(a11)
$values
[1]  3.620937e+01 -2.209373e+00  1.599839e-15  7.166935e-16

$vectors
          [,1]        [,2]       [,3]       [,4]
[1,] 0.4140028  0.82289268 -0.5477226  0.1125155
[2,] 0.4688206  0.42193991  0.7302967  0.2495210
[3,] 0.5236384  0.02098714  0.1825742 -0.8365883
[4,] 0.5784562 -0.37996563 -0.3651484  0.4745519

求解矩陣行列式

> a16 <- array(c(3:6),dim=c(2,2))
> a16
     [,1] [,2]
[1,]    3    5
[2,]    4    6
> det(a16)
[1] -2

奇異值分解

使用R語言的svd函數(shù)可完成奇異分解摔竿。

> a20 <- array(c(1:16),dim=c(4,4))
> a20
     [,1] [,2] [,3] [,4]
[1,]    1    5    9   13
[2,]    2    6   10   14
[3,]    3    7   11   15
[4,]    4    8   12   16
> svd(a20)
$d
[1] 3.862266e+01 2.071323e+00 2.076990e-15 4.119458e-16

$u
           [,1]       [,2]        [,3]       [,4]
[1,] -0.4284124 -0.7186535  0.43803202  0.3288281
[2,] -0.4743725 -0.2738078 -0.82913672 -0.1119477
[3,] -0.5203326  0.1710379  0.34417739 -0.7625890
[4,] -0.5662928  0.6158835  0.04692732  0.5457086

$v
           [,1]        [,2]       [,3]       [,4]
[1,] -0.1347221  0.82574206  0.5322301 -0.1293488
[2,] -0.3407577  0.42881720 -0.6132292  0.5691660
[3,] -0.5467933  0.03189234 -0.3702319 -0.7502855
[4,] -0.7528288 -0.36503251  0.4512310  0.3104683
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市少孝,隨后出現(xiàn)的幾起案子继低,更是在濱河造成了極大的恐慌,老刑警劉巖稍走,帶你破解...
    沈念sama閱讀 206,126評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件袁翁,死亡現(xiàn)場離奇詭異,居然都是意外死亡婿脸,警方通過查閱死者的電腦和手機(jī)粱胜,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,254評論 2 382
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來狐树,“玉大人焙压,你說我怎么就攤上這事∫种樱” “怎么了涯曲?”我有些...
    開封第一講書人閱讀 152,445評論 0 341
  • 文/不壞的土叔 我叫張陵,是天一觀的道長在塔。 經(jīng)常有香客問我幻件,道長,這世上最難降的妖魔是什么蛔溃? 我笑而不...
    開封第一講書人閱讀 55,185評論 1 278
  • 正文 為了忘掉前任绰沥,我火速辦了婚禮篱蝇,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘徽曲。我一直安慰自己态兴,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 64,178評論 5 371
  • 文/花漫 我一把揭開白布疟位。 她就那樣靜靜地躺著瞻润,像睡著了一般。 火紅的嫁衣襯著肌膚如雪甜刻。 梳的紋絲不亂的頭發(fā)上绍撞,一...
    開封第一講書人閱讀 48,970評論 1 284
  • 那天,我揣著相機(jī)與錄音得院,去河邊找鬼傻铣。 笑死,一個胖子當(dāng)著我的面吹牛祥绞,可吹牛的內(nèi)容都是我干的非洲。 我是一名探鬼主播,決...
    沈念sama閱讀 38,276評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼蜕径,長吁一口氣:“原來是場噩夢啊……” “哼两踏!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起兜喻,我...
    開封第一講書人閱讀 36,927評論 0 259
  • 序言:老撾萬榮一對情侶失蹤梦染,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后朴皆,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體帕识,經(jīng)...
    沈念sama閱讀 43,400評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,883評論 2 323
  • 正文 我和宋清朗相戀三年遂铡,在試婚紗的時候發(fā)現(xiàn)自己被綠了肮疗。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 37,997評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡扒接,死狀恐怖伪货,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情珠增,我是刑警寧澤超歌,帶...
    沈念sama閱讀 33,646評論 4 322
  • 正文 年R本政府宣布,位于F島的核電站蒂教,受9級特大地震影響巍举,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜凝垛,卻給世界環(huán)境...
    茶點故事閱讀 39,213評論 3 307
  • 文/蒙蒙 一懊悯、第九天 我趴在偏房一處隱蔽的房頂上張望蜓谋。 院中可真熱鬧,春花似錦炭分、人聲如沸桃焕。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,204評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽观堂。三九已至,卻和暖如春呀忧,著一層夾襖步出監(jiān)牢的瞬間师痕,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,423評論 1 260
  • 我被黑心中介騙來泰國打工而账, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留胰坟,地道東北人。 一個月前我還...
    沈念sama閱讀 45,423評論 2 352
  • 正文 我出身青樓泞辐,卻偏偏與公主長得像笔横,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子咐吼,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,722評論 2 345

推薦閱讀更多精彩內(nèi)容