R語言數(shù)據(jù)類型
在這里只講三種數(shù)據(jù)類型
數(shù)值型(numeric)
字符型(character)
邏輯型(logical)
在R語言里的數(shù)據(jù)框嚴(yán)格區(qū)分列(名)與行黍氮。第1列(gene)是字母和數(shù)字的組合厦章,第2列(logFC)是數(shù)字,第3列(positive)為邏輯值弟断,第4列(group)為字母和數(shù)字的組合贬媒,有重復(fù)摧阅。
1.數(shù)值型(numeric)
如1.3, 2侧甫,數(shù)字是最直觀的,直接寫就可以康铭,可以做運(yùn)算惯退。
2.字符型(character)
包含英文基因名,分組等从藤,不是純數(shù)字的東西寫在代碼里催跪,不能憑空寫,一定加上引號夷野,如”a“懊蒸,”nn“,不加引號會報(bào)錯悯搔,引號單或雙引號都可以骑丸。
3.邏輯型(logical)
R語言里嚴(yán)格區(qū)分大小寫和中英文,邏輯值只認(rèn)識TRUE或是T,F(xiàn)ALSE或是F通危,第三種取值為NA缺失值(未知值)铸豁,NA是存在但是未知,有一種叫不存在菊碟,不屬于NA节芥。數(shù)值型和字符型也有NA,意味著NA可以存在三種數(shù)據(jù)類型中逆害。
判斷數(shù)據(jù)類型的函數(shù):class()藏古,將要判斷的內(nèi)容寫在括號里。
#分別判斷”a“忍燥,TRUE,3是什么數(shù)據(jù)類型隙姿?
class("a")
#[1] "character"
#注意a要加引號梅垄,a是不加引號的情況,如a=1输玷,a被賦值队丝,是變量,可以直接寫成class(a)欲鹏,不需要加引號机久。
##用class()判斷,字符要加引號赔嚎,變量名不加引號膘盖。
class(TRUE)
[1] "logical"
class(3)
[1] "numeric"
數(shù)值型在R語言里可以做計(jì)算;字符型里存放各種信息尤误,如基因名字侠畔,分組信息等。計(jì)算機(jī)最底層就是1和0损晤;邏輯型软棺,在這里講TRUE和FALSE,作用其它運(yùn)算的返回結(jié)果會是邏輯值尤勋,非常重要喘落。
3.1邏輯型數(shù)據(jù)
-
比較運(yùn)算的結(jié)果是邏輯值:
>
,<
,<=
,>=
,==
, !=
######比較運(yùn)算的簡單做法
2==6
##2和6是相等的嗎?
#[1] FALSE
5!=7
##5不等于7嗎最冰?
#[1] TRUE
!
表示否定的意思
- 邏輯運(yùn)算多個邏輯條件的連接
與&
瘦棋,或|
,非!
######比較運(yùn)算的復(fù)雜化(用多個條件連接到一起成為一個新的條件去判斷)
7<9&8>9
#[1] FALSE
##&為and的意思锌奴,兩個條件同時滿足嗎兽狭,同時滿足返回TRUE,不同時滿足返回FALSE。&連接的多個條件只要一個條件不滿足箕慧,返回FALSE服球。
7<9|8>9
#[1] TRUE
##|為或者的意思,連接的多個條件颠焦,只要有一個滿足斩熊,就返回TRUE。
!(4>5)
#[1] TRUE
##!表示非伐庭,TRUE變FALSE粉渠,F(xiàn)ALSE變TRUE,白的為黑圾另,黑的為白
4.數(shù)據(jù)類型的判斷和轉(zhuǎn)換
4.1 is族函數(shù)霸株,判斷,返回值為TRUE和FALSE
is.numeric():是否數(shù)值型數(shù)據(jù)
is.logical():是否邏輯型數(shù)據(jù)
is.character():是否字符型數(shù)據(jù)
is問:xx數(shù)據(jù)屬于數(shù)值型嗎集乔?
回答:是(TRUE)或否(FALSE)
is.numeric('ABC')
#[1] FALSE
##判斷ABC屬于數(shù)值型嗎去件?不是返回FALSE。
is.numeric('68')
#[1]FALSE1
##'68'帶引號為字符型扰路,不是數(shù)值型尤溜,所以返回是FALSE。
4.2 as族函數(shù)實(shí)現(xiàn)數(shù)據(jù)類型之間的轉(zhuǎn)換汗唱。
as.numeric():將其他數(shù)據(jù)類型轉(zhuǎn)換為數(shù)值型
as.logical():將其他數(shù)據(jù)類型轉(zhuǎn)換為邏輯型
as.character():將其他數(shù)據(jù)類型轉(zhuǎn)換為字符型
as.numeric("8")
#[1] 8
##如果有成千上百個數(shù)需要轉(zhuǎn)換宫莱,先賦值給一個變量,括號里只寫變量的名字哩罪,就可以實(shí)現(xiàn)批量轉(zhuǎn)換授霸。
補(bǔ)充知識:
需要在Rstudio里通過運(yùn)行代碼來直觀感受R語言數(shù)據(jù)類型。了解初學(xué)者經(jīng)常遇到的幾種報(bào)錯际插,知道怎么解決以及避免報(bào)錯绝葡,對后面的學(xué)習(xí)(或是實(shí)戰(zhàn))非常有用。
常見報(bào)錯與避免報(bào)錯
常見報(bào)錯:
引號不成對腹鹉,函數(shù)名字拼寫錯誤藏畅,英文字母不區(qū)分大小寫。
報(bào)錯信息永遠(yuǎn)出現(xiàn)Error這個關(guān)鍵詞功咒。
截圖里最后一個報(bào)錯:class?愉阎,問號在哪兒就錯在哪兒,因?yàn)槭褂弥形妮斎敕ǖ睦ㄌ枴?/p>
報(bào)錯Error后常出現(xiàn)的提示信息:
object表示數(shù)據(jù)有問題力奋;
function表示函數(shù)有問題榜旦;
unexpected表示代碼有問題,出現(xiàn)什么對應(yīng)從哪兒操作景殷。
避免錯誤的小竅門:
- 第一個小竅門:鍵盤上的上下鍵
在控制臺上運(yùn)行命令出錯了溅呢,想改澡屡。
光標(biāo)放在>
后面,摁向上鍵咐旧,即可修改上一條命令重新運(yùn)行驶鹉。在控制臺運(yùn)行過的命令直接可以按鍵盤上的上下鍵進(jìn)行翻看,可以修改铣墨。比如class(a)室埋,忘了加引號,在控制臺上的>
后面按向上鍵伊约,雙擊a選中姚淆,按shift鍵之后按引號鍵,注意一定是在英文狀態(tài)下操作屡律。
- 第二個小竅門:Tab鍵
打出前幾個字母腌逢,即出現(xiàn)提示,摁上下鍵可翻動超埋,按tab鍵可自動補(bǔ)全上忍。對于名字長的函數(shù),輸入前幾個字母纳本,按tab
鍵補(bǔ)全,避免手寫錯誤腋颠。
需要用引號繁成,一般先寫引號,或是寫完后選中淑玫,按shift
和“ ”
巾腕,引號一定要成對出現(xiàn)。
說明
以上內(nèi)容是聽生信技能樹小潔老師的R語言線上課絮蒿,根據(jù)自己的理解記錄下來尊搬,小潔老師授課非常細(xì)心,對不同水平的同學(xué)都照顧到土涝,并且補(bǔ)充很多技巧以及注意事項(xiàng)佛寿。
R語言有兩大功能:統(tǒng)計(jì)數(shù)據(jù)和可視化(作圖)。了解R語言的數(shù)據(jù)類型但壮,知道R語言用什么數(shù)據(jù)類型能畫什么圖冀泻,很重要,基礎(chǔ)很重要蜡饵!