介紹R中的一些基本模塊,所有的命令都可以在R
的console
里交互式進(jìn)行。 推薦使用Rstudio
進(jìn)行學(xué)習(xí)
變量
R最簡單的應(yīng)用,是可以作為交互式的計算器痘绎,在console
里輸入5 + 7
然后回車:
> 5 + 7 #輸入,R的控制臺里輸入的前方會有>標(biāo)志
[1] 12 #輸出結(jié)果
默認(rèn)情況下肖粮,R僅打印結(jié)果12。 但是尔苦,R是一種編程語言涩馆,通常我們使用一種編程語言而不是計算器的原因是為了使某些過程自動化或避免不必要的重復(fù)。
在這種情況下允坚,我們可能需要在第二個計算中使用上面的結(jié)果魂那。 不必每次都需要重新鍵入5 + 7,我們只需創(chuàng)建一個存儲結(jié)果的新變量即可稠项。
在R中為變量分配值的方式是使用賦值運(yùn)算符涯雅,該運(yùn)算符只是一個“<”符號,后跟一個“-”展运。 看起來像這樣:<-
活逆。就像一個箭頭,把箭頭右邊的值分配給箭頭左側(cè)的變量名稱拗胜。
我們把上面 5 + 7
的結(jié)果賦值給名稱為x
的新變量蔗候,我們只需要輸入:
> x <- 5 + 7
可以看到這次沒有直接輸出12
。因為當(dāng)我們使用賦值運(yùn)算符時埂软,R默認(rèn)我們不希望立即看到結(jié)果锈遥,而是以后打算將結(jié)果用于其他用途。
要查看變量x的內(nèi)容勘畔,只需鍵入x
并按下回車:
> x
[1] 12
現(xiàn)在我們再把 x-3
賦值給變量y
:
> y <- x - 3
看看y
的值是多少所灸?
> y
[1] 9
向量
現(xiàn)在,讓我們創(chuàng)建一個小的數(shù)字集合炫七,稱為向量(vector)爬立。任何包含數(shù)據(jù)的對象都稱為數(shù)據(jù)結(jié)構(gòu),而數(shù)值向量是R中最簡單的數(shù)據(jù)結(jié)構(gòu)類型诉字。 實(shí)際上懦尝,即使單個數(shù)字也被認(rèn)為是長度為1
的向量。
創(chuàng)建向量的最簡單方法是使用c()
函數(shù)壤圃,該函數(shù)代表“連接(concatenate
)”或“組合(combine
)”陵霉。 若要創(chuàng)建包含數(shù)字1.1
、9
和3.14
的向量伍绳,只需要輸入c1.1踊挠,9,3.14)
,我們把這個結(jié)果保存到變量z
效床。
> z <- c(1.1, 9, 3.14)
[1] 1.10 9.00 3.14
每當(dāng)我們對特定函數(shù)有疑問時睹酌,都可以通過?
命令訪問R
的內(nèi)置幫助文件。例如我們想了解更多關(guān)于c()
函數(shù)的信息剩檀,我們可以在控制臺輸入?c
來查看憋沿,記住這個時候不需要后面的括號。
> ?c
這個時候沪猴,R
就會彈出c()
函數(shù)的幫助文檔辐啄,如果你使用的是Rstudio
,那么幫助文檔在右下方的窗口內(nèi)运嗜。
現(xiàn)在回到我們上面的z
變量壶辜,我們在控制臺輸入z
,會輸出什么担租?
> z
[1] 1.10 9.00 3.14 #沒有輸入時的逗號了
我們還可以通過組合向量來創(chuàng)建新向量砸民,比如創(chuàng)建一個包含z, 555, z
的新向量。這次我們不賦值給新變量奋救,以便立即看到結(jié)果岭参。
> c(z, 555, z)
[1] 1.10 9.00 3.14 555.00 1.10 9.00 3.14
算數(shù)表達(dá)式
數(shù)值向量還可以直接用于算術(shù)表達(dá)式:
> z * 2 + 100
[1] 102.20 118.00 106.28
可以看到R
將向量z
中的每個元素都乘以2
,然后再每個元素加上100
菠镇。 其他常見的算數(shù)運(yùn)算符包括:
'-'
'/'
'^' #平方
sqrt() #平方根
abs() #絕對值
我們來對z - 1
的向量進(jìn)行取平方根冗荸,并賦值給my_sqrt
:
> my_sqrt <- sqrt(z - 1)
那么my_sqrt
的值是什么呢?
> my_sqrt
[1] 0.3162278 2.8284271 1.4628739
與前面的計算類似利耍,R
首先從z
的每個元素中減去1
蚌本,然后取每個元素的平方根。 這樣就得到了與原始向量z
相同長度的向量隘梨。
我們再創(chuàng)建一個新變量my_div
程癌,代表z
除以my_sqrt
的結(jié)果。
> my_div <- z / my_sqrt
> my_div
[1] 3.478505 3.181981 2.146460
當(dāng)給定兩個具有相同長度的向量時轴猎,R
逐個元素簡單地執(zhí)行指定的算術(shù)運(yùn)算嵌莉。 如果向量的長度不同,R
將循環(huán)較短的向量捻脖,直到其長度與較長的向量相同锐峭。
例如上面的z * 2 + 100
的例子,z
是一個長度為3
的向量可婶,而2
和100
可以看作長度為1
的向量沿癞。在R
里面,實(shí)際發(fā)生的運(yùn)算是z * c(2, 2, 2) + c(100, 100, 100)
矛渴。
再看一個關(guān)于向量循環(huán)的例子:
> c(1, 2, 3, 4) + c(0, 10)
[1] 1 12 3 14
第二個向量被R
自動循環(huán)了椎扬。
如果較短的向量無法均勻的劃分較長向量的長度,R
會在結(jié)果中輸出一些警告:
> c(1, 2, 3, 4) + c(0, 10, 100)
[1] 1 12 103 4
Warning message:
In c(1, 2, 3, 4) + c(0, 10, 100) :
longer object length is not a multiple of shorter object length
省時小技巧
- 在控制臺按
↑
方向鍵,可以看到歷史的輸入記錄 - 如果忘記變量或者函數(shù)名蚕涤,可以使用
Tab
鍵自動補(bǔ)全
本文首發(fā)于公眾號:檸檬培養(yǎng)師(ID: yantinger90)筐赔,歡迎關(guān)注!
R語言學(xué)習(xí)-1-Basic Building Blocks