R語言基礎(chǔ)語法

R語法

1.賦值操作

符號(hào)“<-”表賦值,myString <- "Hello, World!"

2.注釋

單引號(hào)和雙引號(hào)表示跨行注釋帆疟,#號(hào)表單行注釋

3.數(shù)據(jù)類型:

1.注意事項(xiàng)

1.R為動(dòng)態(tài)語言,不需要聲明
2.R與Python類似,以function()傳遞函數(shù)

2.基本數(shù)據(jù)類型

數(shù)據(jù)類型 舉例
logical(邏輯型) TRUE鹃栽,F(xiàn)ALSE v <- TRUE; print(class(v));輸出為:logical
Numeric(數(shù)字型) 0-9 v <- 2;print(class(v));輸出為:numerical
integer(整型) 0L档玻,1L v <- 5L;print(class(v));輸出為:integer
Complex(復(fù)合型) 3 + 2i v <- 3 + 2i;print(class(v));輸出為:complex
Character(字符) 'a',"b" v <- 'a';print(class(v));輸出為:character
Raw(原型) 'char'直接被儲(chǔ)存為編碼 v <- charToRaw("Hello");print(class(v));輸出為:raw

3.Vector向量

函數(shù) c() 表示將 多個(gè)元素組合成向量
#creat a vector
apple <- c('red','green,'yellow')
print (apple)
輸出為
[1] "red" "green" "yellow"

4.Lists 列表

使用函數(shù) list()創(chuàng)建怀泊,列表是一個(gè)R對(duì)象,可以包含數(shù)字误趴,字母霹琼,甚至列表和函數(shù),

list <- list(c(1,2,3),2.5,2,'test')
print (list)

輸出結(jié)果為

[[1]]
[1] 1 2 3

[[2]]
[1] 2.5

[[3]]
[1] 2

[[4]]
[1] "test"

5.Matrices 矩陣

使用函數(shù) matrix() 創(chuàng)建,表示二維數(shù)據(jù)凉当,其中 matrix() 函數(shù)參數(shù)解析:matrix(vector枣申,nrow,ncol看杭,byrow)

M <- matrix(c(1,2,3,4,5,6,7,8,9),nrow=3,ncol=3,byrow=TRUE)
print(M)

輸出結(jié)果為

     [,1] [,2] [,3]
[1,]    1    2    3
[2,]    4    5    6
[3,]    7    8    9

6.Arrays 數(shù)組

使用函數(shù) array() 創(chuàng)建忠藤,數(shù)組Arrays類似于matrix,但是其維數(shù)可以多于二維楼雹。其中關(guān)于 array()函數(shù),完整參數(shù)為 array(vector模孩,dim=vector)

a <- array(c('green','yellow'),dim = c(3,3,2))
print(a)

輸出結(jié)果為

, , 1

 [,1]     [,2]     [,3]    
[1,] "green"  "yellow" "green" 
[2,] "yellow" "green"  "yellow"
[3,] "green"  "yellow" "green" 

, , 2

 [,1]     [,2]     [,3]    
[1,] "yellow" "green"  "yellow"
[2,] "green"  "yellow" "green" 
[3,] "yellow" "green"  "yellow"  

7.Factors 因子

因子是使用向量創(chuàng)建的R對(duì)象。 它將向量與向量中元素的不同值一起存儲(chǔ)為標(biāo)簽烘豹。 標(biāo)簽總是字符瓜贾,不管它在輸入向量中是數(shù)字還是字符或布爾等。 它們?cè)诮y(tǒng)計(jì)建模中非常有用携悯。
使用 factor() 函數(shù)創(chuàng)建因子祭芦。nlevels函數(shù)給出級(jí)別計(jì)數(shù)。

apple_colors <- c('green','green','yellow','red','red','red','green')
factor_apple <- factor(apple_colors)

輸出結(jié)果為:

[1] green  green  yellow red    red    red    yellow green 

8.Data Frames 數(shù)據(jù)幀

數(shù)據(jù)幀是表格數(shù)據(jù)對(duì)象憔鬼。 與數(shù)據(jù)幀中的矩陣不同龟劲,每列可以包含不同的數(shù)據(jù)模式。 第一列可以是數(shù)字轴或,而第二列可以是字符昌跌,第三列可以是邏輯的。 它是等長(zhǎng)度的向量的列表照雁。
使用==data.frame()==函數(shù)創(chuàng)建數(shù)據(jù)幀蚕愤。

BMI <-  data.frame(
   gender = c("Male", "Male","Female"), 
   height = c(152, 171.5, 165), 
   weight = c(81,93, 78),
   Age = c(42,38,26)
)

輸出結(jié)果為:

 gender height weight Age
1   Male  152.0     81  42
2   Male  171.5     93  38
3 Female  165.0     78  26

4.變量

1.變量賦值

  • 向左運(yùn)算符,表示方式:a <- 1;表示將1賦值給a
  • 向右運(yùn)算符萍诱,表示方式:2 -> a悬嗓;表示將2賦值給a
  • 等于符號(hào),表示方式:a = 3裕坊;表示將3賦值給a

2.輸出變量

  • cat()函數(shù):cat('text',var)
  • print()函數(shù):print('text',var)

3.變量的數(shù)據(jù)類型

  • R屬于動(dòng)態(tài)類型語言包竹,變量的數(shù)據(jù)類型取決于輸入
  • 變量類型函數(shù):class()
a = 1
print (class(a))

output:

numeric

4.查找變量

  1. 查找所有變量,應(yīng)使用 ls()函數(shù)
    代碼示例:print(ls())
    代碼輸出:[1] "my var" "my_new_var" "my_var" "var.1"

  2. 查找特定變量
    使用 ls()函數(shù) 匹配模式
    代碼示例:print(ls(pattern = 'var'))
    代碼輸出:[1] "my var" "my_new_var" "my_var" "var.1"

  3. 刪除變量
    使用 rm()函數(shù) 刪除變量籍凝,使用 參數(shù)list 可以刪除多個(gè)變量
    代碼示例:rm(list = ls(pattern = 'var'))

5. 運(yùn)算符

1. 算術(shù)運(yùn)輸符

運(yùn)算符 描述 示例
+ 兩向量相加 a = c(1,2,3);b = c(4,5,6);print (a+b) >> 5.0,7.0,9.0
- 兩向量相減 a = c(4,5,6);b = c(1,2,3);print (a-b) >> 3.0,3.0,3.0
* 兩向量相乘 a = c(1,2,3);b = c(4,5,6);print (a*b) >> 4.0,10.0,18.0
/ 兩向量相除 a = c(2,4,6);b = c(1,2,3);print (a/b) >> 2.0,2.0,2.0
%% 兩向量求余 a = c(1,2,3);b = c(4,5,6);print (a%%b) >> 1.0,2.0,3.0
%/% 兩向量相除求整 a = c(1,3,5);b = c(1,2,3);print (a%/%b) >> 1.0,1.0,1.0
^ 將第二向量作為第一向量的指數(shù) a = c(1,3,5);b = c(1,2,3);print (a^b) >> 1.0,9.0,125.0

2. 關(guān)系運(yùn)算符

運(yùn)算符 描述 示例
> 檢查第一向量的每個(gè)元素是否大于第二向量的相應(yīng)元素 v<-c(2,5,6);t<-c(8,2,1);print(v>t) >> FALSE TRUE TRUE
< 檢查第一個(gè)向量的每個(gè)元素是否小于第二個(gè)向量的相應(yīng)元素 v<-c(2,5,6);t<-c(8,2,1);print(v< t) >> TRUE FALSE FALSE
== 檢查第一個(gè)向量的每個(gè)元素是否等于第二個(gè)向量的相應(yīng)元素 v<-c(2,5,6);t<-c(8,2,1);print(v==t) >> FALSE FALSE FALSE
<= 檢查第一向量的每個(gè)元素是否小于或等于第二向量的相應(yīng)元素 v<-c(2,5,6);t<-c(8,2,1);print(v<=t) >> TRUE FALSE FALSE
>= 檢查第一向量的每個(gè)元素是否大于或等于第二向量的相應(yīng)元素 v<-c(2,5,6);t<-c(8,2,1);print(v>=t) >> FALSE TRUE TRUE
!= 檢查第一個(gè)向量的每個(gè)元素是否不等于第二個(gè)向量的相應(yīng)元素 v<-c(2,5,6);t<-c(8,2,1);print(v!=t) >> TRUE TRUE TRUE

3. 邏輯運(yùn)算符

運(yùn)算符 描述
& AND運(yùn)算符,兩向量對(duì)應(yīng)元素均為 TRUE周瞎,則輸出向量對(duì)應(yīng)元素為 TRUE
I 或運(yùn)算符,兩向量對(duì)應(yīng)元素有一元素為真,則輸出向量對(duì)應(yīng)元素為 TRUE
! 非運(yùn)算符,對(duì)輸入向量的元素饵蒂,取相反值作為 輸出向量

4. 特殊邏輯運(yùn)算符

運(yùn)算符 描述
&& AND運(yùn)算符声诸,取兩個(gè)向量的第一個(gè)元素,并且只有兩個(gè)都為TRUE時(shí)才給出TRUE
II OR運(yùn)算符苹享,取兩個(gè)向量的第一個(gè)元素双絮,如果其中一個(gè)為TRUE,則給出TRUE

5. 其他運(yùn)算符

運(yùn)算符 描述 示例
冒號(hào)運(yùn)算符得问,按順序創(chuàng)造數(shù)字向量 V = 2:5 >> 2 3 4 5
%*% 將矩陣與其轉(zhuǎn)置相乘

6.R語言包

1. 安裝新的包

install.packages("Package Name")
//或者
install.packages(file_name_with_path, repos = NULL, type = "source")

2.裝載包到庫中

library("package Name", lib.loc = "path to library")

7.條件語句

1.IF條件語句

if(boolean_expression) {
   // statement(s) will execute if the boolean expression is true.
}

2.IF...ELSE語句

if(boolean_expression) {
   // statement(s) will execute if the boolean expression is true.
} else {
   // statement(s) will execute if the boolean expression is false.
}

3.SWITCH語句

switch(expression, case1, case2, case3....)

8.循環(huán)語句

1.Repeat循環(huán)

Repeat循環(huán)重復(fù)執(zhí)行相同的代碼囤攀,直到滿足停止條件

repeat { 
   commands 
   if(condition) {
      break
   }
}

2.While循環(huán)

While循環(huán)一次又一次地執(zhí)行相同的代碼,直到滿足停止條件

while (test_expression) {
   statement
}

3. For循環(huán)

R的for循環(huán)是特別靈活的宫纬,因?yàn)樗鼈儾幌抻谡麛?shù)焚挠,或者輸入中的偶數(shù)。 我們可以傳遞字符向量漓骚,邏輯向量蝌衔,列表或表達(dá)式

for (test_expression) {
   statement
}

此處補(bǔ)充示例:

v <- LETTERS[1:4]
for ( i in v) {
   print(i)
}

4.循環(huán)控制語句

  • break語句:跳出循環(huán),執(zhí)行以后語句
  • next語句:跳過本次迭代蝌蹂,并開始循環(huán)的下一次迭代

9.數(shù)據(jù)重塑

修改R數(shù)據(jù)集的格式噩斟,改變行列數(shù)據(jù)呈現(xiàn)方式

1.合并向量

  • cband()函數(shù):用于合并多個(gè)向量為一個(gè)數(shù)據(jù)幀(矩陣合并,按行合并)

  • rband()函數(shù):用于合并兩個(gè)數(shù)據(jù)幀(矩陣合并孤个,安列合并)

a = c(1,1,1)
b = c(2,2,2)
c = rbind(a,b)
d = cbind(a,b)

輸出結(jié)果為:

#rbind函數(shù)
  [,1] [,2] [,3]
a    1    1    1
b    2    2    2
#cbind函數(shù)
     a b
[1,] 1 2
[2,] 1 2
[3,] 1 2

2.合并數(shù)據(jù)幀————merge函數(shù)

merge(x, y, by = intersect(names(x), names(y)),
      by.x = by, by.y = by, all = FALSE, all.x = all, all.y = all,
      sort = TRUE, suffixes = c(".x",".y"),
      incomparables = NULL, ...)

函數(shù)解析:

 merge函數(shù)參數(shù)的說明:

    x,y:用于合并的兩個(gè)數(shù)據(jù)框

    by,by.x,by.y:指定依據(jù)哪些行合并數(shù)據(jù)框,默認(rèn)值為相同列名的列.

    all,all.x,all.y:指定x和y的行是否應(yīng)該全在輸出文件.

    sort:by指定的列是否要排序.

3.重塑數(shù)據(jù)————melt函數(shù)

melt函數(shù)可用于重塑數(shù)據(jù)集

melt(data,id.vars=c("Name1","Name2",...),variable.name="Name3",value.name="Name4")

函數(shù)參數(shù)解析:
data剃允,為 melt函數(shù) 的數(shù)據(jù)對(duì)象
id.var,表示數(shù)據(jù)對(duì)象中保持不變的數(shù)據(jù)標(biāo)簽齐鲤,除id.vars指定的標(biāo)簽外斥废,其余標(biāo)簽均需要重塑
variable.name,用以指定需要重塑的標(biāo)簽所在列的名稱
value.name给郊,用以指定需要重塑的標(biāo)簽的值所在列的名稱

代碼示例
data<-data.frame(
Name = c("蘋果","谷歌","臉書","亞馬遜","騰訊"),
Company = c("Apple","Google","Facebook","Amozon","Tencent"),
Sale2013 = c(5000,3500,2300,2100,3100),
Sale2014 = c(5050,3800,2900,2500,3300)
)
print(data)
mydata<-melt(data,id.vars=c("Name","Company"),variable.name="Year",value.name="Sale")
print(mydata)
輸出結(jié)果
#output 1
Name    Company Sale2013    Sale2014
蘋果  Apple   5000    5050
谷歌  Google  3500    3800
臉書  Facebook    2300    2900
亞馬遜 Amozon  2100    2500
騰訊  Tencent 3100    3300
#output 2
Name    Company Year    Sale
蘋果  Apple   Sale2013    5000
谷歌  Google  Sale2013    3500
臉書  Facebook    Sale2013    2300
亞馬遜 Amozon  Sale2013    2100
騰訊  Tencent Sale2013    3100
蘋果  Apple   Sale2014    5050
谷歌  Google  Sale2014    3800
臉書  Facebook    Sale2014    2900
亞馬遜 Amozon  Sale2014    2500
騰訊  Tencent Sale2014    3300

4.重塑數(shù)據(jù)——————cast函數(shù)

cast函數(shù)的作用于melt函數(shù)相反牡肉,可以將單列數(shù)據(jù)轉(zhuǎn)化為多列數(shù)據(jù),按輸出結(jié)果為向量,矩陣等采用acast淆九;輸出結(jié)果為data frames采用dcast

#function-1
dcast(data, formula, drop = TRUE,value.var = guess_value(data))
#function-2
acast(data, formula, drop = TRUE,value.var = guess_value(data))

10.函數(shù)

1.定義函數(shù)

function_name <- function(arg_1, arg_2, ...) {
   Function body 
}

2.函數(shù)示例

# Create a function to print squares of numbers in sequence.
new.function <- function(a) {
   for(i in 1:a) {
      b <- i^2
      print(b)
   }
}
# Call the function new.function supplying 6 as an argument.
new.function(6)
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末统锤,一起剝皮案震驚了整個(gè)濱河市毛俏,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌饲窿,老刑警劉巖拧抖,帶你破解...
    沈念sama閱讀 218,122評(píng)論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異免绿,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)擦盾,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,070評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門嘲驾,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人迹卢,你說我怎么就攤上這事辽故。” “怎么了腐碱?”我有些...
    開封第一講書人閱讀 164,491評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵誊垢,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我症见,道長(zhǎng)喂走,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,636評(píng)論 1 293
  • 正文 為了忘掉前任谋作,我火速辦了婚禮芋肠,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘遵蚜。我一直安慰自己帖池,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,676評(píng)論 6 392
  • 文/花漫 我一把揭開白布吭净。 她就那樣靜靜地躺著睡汹,像睡著了一般。 火紅的嫁衣襯著肌膚如雪寂殉。 梳的紋絲不亂的頭發(fā)上囚巴,一...
    開封第一講書人閱讀 51,541評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音不撑,去河邊找鬼文兢。 笑死,一個(gè)胖子當(dāng)著我的面吹牛焕檬,可吹牛的內(nèi)容都是我干的姆坚。 我是一名探鬼主播,決...
    沈念sama閱讀 40,292評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼实愚,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼兼呵!你這毒婦竟也來了兔辅?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,211評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤击喂,失蹤者是張志新(化名)和其女友劉穎维苔,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體懂昂,經(jīng)...
    沈念sama閱讀 45,655評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡介时,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,846評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了凌彬。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片沸柔。...
    茶點(diǎn)故事閱讀 39,965評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖铲敛,靈堂內(nèi)的尸體忽然破棺而出褐澎,到底是詐尸還是另有隱情,我是刑警寧澤伐蒋,帶...
    沈念sama閱讀 35,684評(píng)論 5 347
  • 正文 年R本政府宣布工三,位于F島的核電站,受9級(jí)特大地震影響先鱼,放射性物質(zhì)發(fā)生泄漏俭正。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,295評(píng)論 3 329
  • 文/蒙蒙 一焙畔、第九天 我趴在偏房一處隱蔽的房頂上張望段审。 院中可真熱鬧,春花似錦闹蒜、人聲如沸寺枉。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,894評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽姥闪。三九已至,卻和暖如春砌烁,著一層夾襖步出監(jiān)牢的瞬間筐喳,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,012評(píng)論 1 269
  • 我被黑心中介騙來泰國(guó)打工函喉, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留避归,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,126評(píng)論 3 370
  • 正文 我出身青樓管呵,卻偏偏與公主長(zhǎng)得像梳毙,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子捐下,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,914評(píng)論 2 355

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