作為一款統計軟體,r最重要的功能就是進行統計計算,這一節就和小夥伴聊一聊r的基本計算語句。
r執行**時,會呼叫計算機執行記憶體完成計算任務,因此r也可以實現常用的數學四則運算以及更進一步的複雜運算。
x + y # 加法運算
x - y # 減法運算
x * y # 乘法運算
x / y # 除法運算
x ** y # 乘方(指數)運算(1)
x ^ y # 乘方(指數)運算(2),開方運算的y為分數
sqrt(x)
# 開平方運算
abs(x)
# 求絕對值
x %% y # 除法取餘數
x %/% y # 整除運算
exp(x)
# 自然指數運算
log(x,y)
# 以y為底的x的對數
log10(x)
# 常用對數
round(x,y)
# x四捨五入保留y位小數
round(x)
# 取整函式,四捨六入五留雙
ceiling(x)
# x的向上取整
floor(x)
# x的向下取整
sin(x)
# 正弦函式
cos(x)
# 余弦函式
tan(x)
# 正切函式
asin(x)
# 反正弦函式
acos(x)
# 反余弦函式
atan(x)
# 反正切函式
以上就是一些常用的基本預算,還有一些衍生的運算,比如餘切,正割,正矢函式等都可以通過上述基本運算的結合而實現。
之前我們聊過r的物件包括邏輯值,因此r也能夠進行相應的邏輯運算。
x | y # 或運算
x & y # 與運算
!x # 非運算
x == y # 相等
x > y # 大於
x < y # 小於
x >= y # 大於或等於
x <= y # 小於或等於
邏輯運算的結果是true/false的邏輯值,有時候可以通過邏輯運算來實現一些精妙的設計。比如對學生的成績單進行分析,可以運用邏輯運算判斷學生更加擅長哪些科目。
首先,我們要建立乙個向量vector
> vector <- c(1:
10)> print(vector)[1
]123
4567
8910
這裡1:10表示乙個從1到10的10位整數數列,我們也可以用seq(1,10,1)
來生成同樣的數列,其中,第乙個1表示起始點為1,10表示終點為10,第二個1表示步長(或者叫等差數列的公差)為1。
如果我們對這個向量使用基本運算
> vector +10[
1]1112
1314
1516
1718
1920
我們會發現這個向量中的每乙個元素都進行了相應的操作,這個就是向量化運算,我們不需要利用迴圈語句來實現這一目的。
當然,如果我們想要對向量中某些特定的值進行處理,r也是可以實現的
> vector[1]
+1[1
]11> vector[1]
<- vector[1]
+1> print(vector)[1
]1123
4567
8910
中括號[ ]表示選擇這個向量中的第幾個元素進行處理,第一行**表示要讓vector的第乙個值加1,因此結果會輸出11。如果我們想要把這個處理儲存下來,則一定要將這個處理後的值賦值回原來的位置。
另外,除了特定的值,當向量的長度很長時,我們不可能乙個個去挑選我們所要更改的位置,這時我們就需要使用邏輯運算來篩選滿足條件的位置進行處理
> vector[vector <5]
+123
45
上述**表示,我們選擇這個向量裡小於5的數,即1,2,3,4,我們讓這四個數分別加1,因此得到了上述運算結果(同樣,如果需要儲存的話還需要進行賦值處理喲)
除此之外,我們可能還會涉及到兩個向量或多個向量的與運算,這個時候就會存在一些需要注意的地方。
v1 <- c(1,
2,3)
v2 <- c(2,
1,3)
v3 <- c(1,
2,3,
4)
如果對上述向量進行四則運算,出現的結果則是向量中的每乙個元素都相應地與相同位置的元素進行運算,比如
> v1 + v2[1
]336
> v1 + v3[1
]246
5warning message:
in v1 + v3 : 長的物件長度不是短的物件長度的整倍數
如果兩個向量長度相等,那麼運算會正常進行。如果兩個向量的長度不相等,那麼我們也會得到乙個結果,即短向量在所有元素都完成處理以後,再從第乙個元素開始重複運算,但是r會提供乙個警告資訊。
> v1 > v2[1
]false
true
false
> v1 > v3[1
]false
false
false
false
warning message:
in v1 > v3 : 長的物件長度不是短的物件長度的整倍數
向量的邏輯運算也是一樣,會顯示出每乙個邏輯值。如果兩個向量長度不一樣,那麼會重複短向量的元素進行比較,並提供警告資訊。此外,v1 || v2
以及v1 && v2
可以用來對兩個向量的第乙個元素進行邏輯運算。
矩陣與資料框的運算和向量的運算類似,只不過有一點需要注意的是,向量是一維的,而矩陣和資料框是二維的,因此在元素選擇上,矩陣和資料框的操作與向量存在差異。
> matrix <- matrix(c(1,
2,3,
4,5,
6), nrow =
2, ncol =3,
byrow = t)
> print(matrix)[,
1][,
2][,
3][1
,]12
3[2,
]456
由上述**可以看出,如果我們想要選擇特定的元素,我們需要同時確定這個元素所在的行和列,中括號中有兩個元素,[x,y],x代表元素位置的行數,y代表元素位置的列數。如果某個元素為空,則代表選擇某行(列)的所有元素。
儘管矩陣的列也可以進行命名,但是資料框的列往往都有自己的名字,在資料分析中稱為變數名。
> dataframe <- as.data.frame(matrix)
> print(dataframe)
v1 v2 v311
2324
56> dataframe[1]
v111
24> dataframe$v1[1
]14
上述**中,我們首先將前文的矩陣轉換為資料框,這樣形成乙個具有2個觀測值,3個變數的資料框。如果我們使用中括號的形式選擇變數,則結果是乙個新的資料框。我們也可以利用$
符號來選擇資料框中的某一變數,這時的結果則是乙個向量。兩種結果的差異容以後再談,但是一般我們運算元據框往往使用後者居多。
今天的介紹就到這裡啦!
從零開始學Python(三)基本常識
在linux unix系統中,你可以在指令碼頂部新增以下命令讓python指令碼可以像shell指令碼一樣可直接執行 usr bin env python3.4單行注釋以 開頭 多行注釋用三個單引號 或者三個雙引號 將注釋括起來,可在一行,但不能在行尾 測試例項中包含了一系列的成員,包括字串,列表或...
零開始學python 從零開始學Python
第1章 python入門 1 1 1 什麼是python 1 1 2 python語言有什麼特點 2 1 3 python可以幹什麼 4 練一練 5 第2章 準備開發環境 6 2 1 在windows上安裝python開發環境 6 2 2 選擇和安裝開發工具 11 練一練 17 第3章 基本概念 1...
從零開始學程式設計 三 python基本概念
表示式 表示式就是類似乙個數學的計算題,最簡單的例子比如 1 2,3 4,這些都是表示式,輸入表示式,程式會自動輸出乙個結果。現在,在命令列工具或者cmd中輸入python,開啟python的互動模式,嘗試一下,有沒有和下面的 塊一樣的東西呢?1 2 3 語句 語句,容易和表示式弄混,語句常用來完成...