R 基礎(chǔ)運算

本章介紹 R 語言的簡單運算。

賦值

一般語言的賦值是 = 號,但是 R 語言是數(shù)學(xué)語言,所以賦值符號與我們數(shù)學(xué)書上的偽代碼很相似,是一個左箭頭 <- :

a <- 123
b <- 456
print(a + b)

以上代碼執(zhí)行結(jié)果:

[1] 579

這個賦值符號是 R 語言的一個形式上的優(yōu)點和操作上的缺點:形式上更適合數(shù)學(xué)工作者,畢竟不是所有的數(shù)學(xué)工作者都習(xí)慣于使用 = 作為賦值符號。

操作上來講,< 符號和 - 符號都不是很好打的字符,這會讓很多程序員不適應(yīng)。因此,R 語言的比較新的版本也支持 = 作為賦值符:

a = 123
b = 456
print(a + b)

這也是合法的 R 程序。

注意:很難考證從 R 的哪個版本開始支持了 = 賦值,但是本教程習(xí)用的 R 版本是 4.0.0。

數(shù)學(xué)運算符

下表列出了主要的數(shù)學(xué)運算符以及他們的運算順序:

優(yōu)先級符號含義
1()括號
2^乘方運算
3%%整除求余
 %/%整除
4*乘法
 /除法
5+加法
 -減法

以下示例演示了簡單的數(shù)學(xué)運算:

> 1 + 2 * 3
[1] 7
> (1 + 2) * 3
[1] 9
> 3 / 4
[1] 0.75
> 3.4 - 1.2
[1] 2.2
> 1 - 4 * 0.5^3
[1] 0.5
> 8 / 3 %% 2
[1] 8
> 8 / 4 %% 2
[1] Inf
> 3 %% 2^2
[1] 3
> 10 / 3 %/% 2
[1] 10

關(guān)系運算符

下表列出了 R 語言支持的關(guān)系運算符,關(guān)系運算符比較兩個向量,將第一向量與第二向量的每個元素進(jìn)行比較,結(jié)果返回一個布爾值。

運算符描述
>判斷第一個向量的每個元素是否大于第二個向量的相對應(yīng)元素。
<判斷第一個向量的每個元素是否小于第二個向量的相對應(yīng)元素。
==判斷第一個向量的每個元素是否等于第二個向量的相對應(yīng)元素。
!=判斷第一個向量的每個元素是否不等于第二個向量的相對應(yīng)元素。
>=判斷第一個向量的每個元素是否大于等于第二個向量的相對應(yīng)元素。
<=判斷第一個向量的每個元素是否小于等于第二個向量的相對應(yīng)元素。
v <- c(2,4,6,9)
t <- c(1,4,7,9)
print(v>t)
print(v < t)
print(v == t)
print(v!=t)
print(v>=t)
print(v<=t)

執(zhí)行以上代碼輸出結(jié)果為:

[1]  TRUE FALSE FALSE FALSE
[1] FALSE FALSE  TRUE FALSE
[1] FALSE  TRUE FALSE  TRUE
[1]  TRUE FALSE  TRUE FALSE
[1]  TRUE  TRUE FALSE  TRUE
[1] FALSE  TRUE  TRUE  TRUE

邏輯運算符

下表列出了 R 語言支持的邏輯運算符,可用于數(shù)字、邏輯和復(fù)數(shù)類型的向量。

大于 1 的數(shù)字都為 TRUE。

邏輯運算符比較兩個向量,將第一向量與第二向量的每個元素進(jìn)行比較,結(jié)果返回一個布爾值。

運算符描述
&元素邏輯與運算符,將第一個向量的每個元素與第二個向量的相對應(yīng)元素進(jìn)行組合,如果兩個元素都為 TRUE,則結(jié)果為 TRUE,否則為 FALSE。
元素邏輯或運算符,將第一個向量的每個元素與第二個向量的相對應(yīng)元素進(jìn)行組合,如果兩個元素中有一個為 TRUE,則結(jié)果為 TRUE,如果都為 FALSE,則返回 FALSE。
!邏輯非運算符,返回向量每個元素相反的邏輯值,如果元素為 TRUE 則返回 FALSE,如果元素為 FALSE 則返回 TRUE。
&&邏輯與運算符,只對兩個向量對第一個元素進(jìn)行判斷,如果兩個元素都為 TRUE,則結(jié)果為 TRUE,否則為 FALSE。
||邏輯或運算符,只對兩個向量對第一個元素進(jìn)行判斷,如果兩個元素中有一個為 TRUE,則結(jié)果為 TRUE,如果都為 FALSE,則返回 FALSE。
v <- c(3,1,TRUE,2+3i)
t <- c(4,1,FALSE,2+3i)
print(v&t)
print(v|t)
print(!v)

# &&、||只對第一個元素進(jìn)行比較
v <- c(3,0,TRUE,2+2i)
t <- c(1,3,TRUE,2+3i)
print(v&&t)

v <- c(0,0,TRUE,2+2i)
t <- c(0,3,TRUE,2+3i)
print(v||t)

執(zhí)行以上代碼輸出結(jié)果為:

[1]  TRUE  TRUE FALSE  TRUE
[1] TRUE TRUE TRUE TRUE
[1] FALSE FALSE FALSE FALSE
[1] TRUE
[1] FALSE

賦值運算符

R 語言變量可以使用向左,向右或等于操作符來賦值。

下表列出了 R 語言支持的賦值運算符。

運算符描述

<?

=

<<?

向左賦值。

?>

?>>

向右賦值。
# 向左賦值
v1 <- c(3,1,TRUE,"nhooo")
v2 <<- c(3,1,TRUE,"nhooo")
v3 = c(3,1,TRUE,"nhooo")
print(v1)
print(v2)
print(v3)


# 向右賦值
c(3,1,TRUE,"nhooo") -> v1
c(3,1,TRUE,"nhooo") ->> v2 
print(v1)
print(v2)

執(zhí)行以上代碼輸出結(jié)果為:

[1] "3"      "1"      "TRUE"   "nhooo"
[1] "3"      "1"      "TRUE"   "nhooo"
[1] "3"      "1"      "TRUE"   "nhooo"
[1] "3"      "1"      "TRUE"   "nhooo"
[1] "3"      "1"      "TRUE"   "nhooo"

其他運算符

R 語言還包含了一些特別的運算符。

運算符描述
:冒號運算符,用于創(chuàng)建一系列數(shù)字的向量。
%in%用于判斷元素是否在向量里,返回布爾值,有的話返回 TRUE,沒有返回 FALSE。
%*%用于矩陣與它轉(zhuǎn)置的矩陣相乘。
# 1 到 10 的向量
v <- 1:10
print(v) 

# 判斷數(shù)字是否在向量 v 中
v1 <- 3
v2 <- 15
print(v1 %in% v) 
print(v2 %in% v) 

# 矩陣與它轉(zhuǎn)置的矩陣相乘
M = matrix( c(2,6,5,1,10,4), nrow = 2,ncol = 3,byrow = TRUE)
t = M %*% t(M)
print(t)

執(zhí)行以上代碼輸出結(jié)果為:

[1]  1  2  3  4  5  6  7  8  9 10
[1] TRUE
[1] FALSE
     [,1] [,2]
[1,]   65   82
[2,]   82  117

數(shù)學(xué)函數(shù)

常見對一些數(shù)學(xué)函數(shù)有:

函數(shù)說明
sqrt(n)n的平方根
exp(n)自然常數(shù)e的n次方,
log(m,n)m的對數(shù)函數(shù),返回n的幾次方等于m
log10(m)相當(dāng)于log(m,10)

以下示例演示了數(shù)學(xué)函數(shù)的應(yīng)用:

> sqrt(4)
[1] 2
> exp(1)
[1] 2.718282
> exp(2)
[1] 7.389056
> log(2,4)
[1] 0.5
> log10(10000)
[1] 4

取整函數(shù):

名稱參數(shù)模型含義
round(n)對 n 四舍五入取整
 (n, m)對 n 保留 m 位小數(shù)四舍五入
ceiling(n)對 n 向上取整
floor(n)對 n 向下取整

以下示例演示了取整函數(shù)的應(yīng)用:

> round(1.5)
[1] 2
> round(2.5)
[1] 2
> round(3.5)
[1] 4
> round(4.5)
[1] 4

注意:R 中的 round 函數(shù)有些情況下可能會"舍掉五"。

當(dāng)取整位是偶數(shù)的時候,五也會被舍去,這一點與 C 語言有所不同。

R 的三角函數(shù)是弧度制:

> sin(pi/6)
[1] 0.5
> cos(pi/4)
[1] 0.7071068
> tan(pi/3)
[1] 1.732051

反三角函數(shù):

> asin(0.5)
[1] 0.5235988
> acos(0.7071068)
[1] 0.7853981
> atan(1.732051)
[1] 1.047198

如果學(xué)習(xí)過概率論和統(tǒng)計學(xué),應(yīng)該對以下的概率分布函數(shù)比較了解,因為 R 語言為數(shù)學(xué)工作者設(shè)計,所以經(jīng)常會用到:

> dnorm(0)
[1] 0.3989423
> pnorm(0)
[1] 0.5
> qnorm(0.95)
[1] 1.644854
> rnorm(3, 5, 2) # 產(chǎn)生 3 個平均值為 5,標(biāo)準(zhǔn)差為 2 的正態(tài)隨機數(shù)
[1] 4.177589 6.413927 4.206032

這四個都是用來計算正態(tài)分布的函數(shù)。它們的名字都以 norm 結(jié)尾,代表"正態(tài)分布"。

分布函數(shù)名字的前綴有四種:

  • d - 概率密度函數(shù)

  • p - 概率密度積分函數(shù)(從無限小到 x 的積分)

  • q - 分位數(shù)函數(shù)

  • r - 隨機數(shù)函數(shù)(常用于概率仿真)

:由于本教程不是闡述數(shù)學(xué)專業(yè)理論的教程,所以對有關(guān)概率分布的數(shù)學(xué)理論不作詳細(xì)解釋。R 語言除了含有正態(tài)分布函數(shù)以外還有泊松分布 (pois, Poisson) 等常見分布函數(shù),如果想詳細(xì)了解可以學(xué)習(xí)"概率論與數(shù)理統(tǒng)計"。

丰满人妻一级特黄a大片,午夜无码免费福利一级,欧美亚洲精品在线,国产婷婷成人久久Av免费高清