一、數(shù)據(jù)類型
數(shù)據(jù)類型(數(shù)據(jù)模式):表示該數(shù)據(jù)所屬的類別譬正,包括數(shù)值型( numeric宫补,如1,2,3)檬姥、字符型( character,如今天,星期二)粉怕、邏輯性( logical健民,是,否/對贫贝,錯)秉犹、因子型(factor將類別型的變量稱為因子,如輕稚晚,中崇堵,重)、復數(shù)型(用的較少客燕,不介紹)鸳劳。
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ——本節(jié)詳細內(nèi)容可參考Robert I. Kabacoff《R語言實戰(zhàn)(第2版) 》
二、數(shù)據(jù)結(jié)構(gòu)
R中用于存儲數(shù)據(jù)的形式即數(shù)據(jù)結(jié)構(gòu)也搓,包括標量赏廓、向量(vector);矩陣(matrix)还绘、數(shù)組楚昭;數(shù)據(jù)框(dataframe)和列表(list) (記住各數(shù)據(jù)類型和結(jié)構(gòu)的英文,后面要用拍顷。標量和數(shù)組了解概念就行)抚太。
1 標量與向量 (vector)
向量是存儲數(shù)值型、字符型或邏輯性數(shù)據(jù)的一維數(shù)組昔案。
#標量即只有一個元素的向量 (標量了解就行)尿贫。
向量創(chuàng)建:c()函數(shù) 或者 :
#也可以用rep()和seq()函數(shù)創(chuàng)建,但是c()函數(shù)和冒號用的最多踏揣,掌握這兩個庆亡,其他兩個需要用時再介紹。
特點:同一個向量中的數(shù)據(jù)只能包含一種數(shù)據(jù)類型捞稿,不能混雜不同類型的數(shù)據(jù)又谋。
舉例:
a<-c(1,2,-3,-6,8) #向量中的變量叫做元素,比如這里a向量中第3個元素是-3
#注釋符號不能多行注釋娱局,超出來的行在行前加注釋符號彰亥,或者輸入讓解釋器忽#(接上一行)略該行代碼的命令
a #展示數(shù)值型向量a
b <- c("one","two","three")? #加雙引號表示字符型
b
c<-c(TRUE,TRUE,FALSE) #邏輯向量c,邏輯元素也可簡寫成T/F
c
d<-c(4:8)? #冒號生成等差數(shù)列,從4到8的整數(shù)
d
e<-4:8? ##同c(4:8)
e
f <- 2:6
f
plot(e,f) #為了復習文檔“3.R中的賦值和運算”中Rstudio的四個區(qū)衰齐,這里畫個
#圖展示任斋,e為橫坐標,f為縱坐標
如果覺得控制臺內(nèi)容太多耻涛,可以按快捷鍵“Ctrl加L”清空控制臺(不會刪除存儲的變量名的)废酷。? ?
2 向量中元素的引用 (即元素的提取)
使用中括號引用元素[]
x[i]? #x是向量名稱瘟檩,i表示第i個元素,合在一起就是提取x向量中第i個元素
舉例:
rm(list=ls())? #清除所有變量
#因為我這里剛剛運行了幾個變量(a-f),為了防止誤解,我先清空一下澈蟆。
#補充:rm(變量名)? 可以清空某個變量墨辛。
a<-c(1,2,-3,-6,8)#創(chuàng)建向量a
a[3]? #提取向量a中第3個元素,返回值應該為 -3
a[c(2,4)] #分析:c(2,4)返回值為2,4丰介;所以a[c(2,4)]即為a[2,4]
# a[2,4]即提取向量a中第2和第4個元素
#返回結(jié)果應為2? -6背蟆,看下面運行結(jié)果
3 向量的運算
數(shù)值型向量和數(shù)值型向量間可以進行數(shù)學運算(如果兩個向量長度一樣,即包含的元素個數(shù)一樣多哮幢,返回為運算和的值带膀;如果其中一個向量長度是另一個向量長度的整數(shù)倍,短的那個會按順序重復全部元素橙垢,自動填充到和長的那個一樣長垛叨,再進行數(shù)學運算;如果不是整數(shù)倍柜某,會報警告嗽元,短的那個再填充到和長的一樣長后再運算)
邏輯型向量和邏輯型向量間可以進行數(shù)學運算(T默認=1,F默認為0),也可以邏輯運算喂击。
#主要介紹的是我們平時分析數(shù)據(jù)常用的兩種運算剂癌,比較運算未介紹。
舉例:
a<-c(3:5)? #注意這是冒號翰绊,上面講過冒號的作用
b<-c(1,2,4)
c<-c(2,2,2,1,1,1)
d<-c(1,2)
a+b?
a*b
a+c? ? #c長度是a的倍數(shù)佩谷,所以a自動填充為“3,4,5,3,4,5”,再和c相加
a+d? ? #a長度不是d的倍數(shù)监嗜,所以會報警告谐檀,然后d填充為“1,2,1”,再和a相加
邏輯向量運算舉例:
a<-c(T,F,T)
b<-c(F,T,T)
a+b? #數(shù)學運算(T默認=1,F默認為0)
a&b? #邏輯運算
4 判斷數(shù)據(jù)是否為向量
is.vector()函數(shù)? ? ? ? ? ? ? #返回邏輯值
舉例:
a<-matrix(c(1:12),nrow=3,ncol=4)? #創(chuàng)建一個3行4列的矩陣a
is.vector(a)? ? ? ? ? ? #判斷a是向量嗎裁奇?是就會返回TRUE,不是返回FALSE
is.matrix(a)#判斷a是矩陣嗎桐猬?
向量的轉(zhuǎn)換用as.vector()函數(shù),等學了其他數(shù)據(jù)格式后再一起介紹刽肠。