R對(duì)象的類(lèi)型
1峰锁、原子向量
? ? ? ? ? ? ? ? ? ? ? ? ?x1<-c(1:5)
? ? ? ? ? ? ? ? ? ? ? ? ?x1為原子型向量
? ? ? ? ? ? ? ? ? ? ? ? ?x1<-5
? ? ? ? ? ? ? ? ? ? ? ? ?length x1
? ? ? ? ? ? ? ? ? ? ? ? ? #1
? ? ? ? ? ? ? ? ? ? ? ? ? x1為長(zhǎng)度為1的原子向量
原子向量只能是一種類(lèi)型的數(shù)據(jù)诫惭,其值儲(chǔ)存在一維向量中毛雇。原子向量可以?xún)?chǔ)存的數(shù)據(jù)類(lèi)型有:整型(integer)、雙整型(double)阿蝶、字符型(character)冰木、邏輯型(logical)饼丘、復(fù)數(shù)類(lèi)型(complex)、原始類(lèi)型(raw)仑最。
每種原子向量都有特定的書(shū)寫(xiě)規(guī)范扔役,這樣R才能夠準(zhǔn)確識(shí)別,進(jìn)行過(guò)運(yùn)算警医。
下面介紹R的六種原子向量
1亿胸、雙整型坯钦,又稱(chēng)數(shù)值型
特點(diǎn):存儲(chǔ)普通的數(shù)值型數(shù)據(jù);可大可小侈玄,可正可負(fù)婉刀,小數(shù)點(diǎn)可有可無(wú)。在R中鍵入的數(shù)據(jù)都默認(rèn)以雙整型(數(shù)值型)儲(chǔ)存序仙。
2突颊、整型
特點(diǎn):不需要小數(shù)點(diǎn)。明確設(shè)定整型的方法是數(shù)值之后加L潘悼。
整型和雙整型的特點(diǎn)比較:a律秃、數(shù)據(jù)處理更常用雙整型數(shù)據(jù) b、1和1L的儲(chǔ)存方式不同治唤,整型的定義方式要比雙整型更加精確 c棒动、采用整型進(jìn)行運(yùn)算,有時(shí)會(huì)產(chǎn)生浮點(diǎn)誤差宾添。
3迁客、字符型
特點(diǎn):儲(chǔ)存文本。書(shū)寫(xiě)要加雙引號(hào)辞槐。字符型向量中的單個(gè)元素成為字符串(string)掷漱,可以包含字母、數(shù)字或者符號(hào)榄檬。
4卜范、邏輯型
特點(diǎn):儲(chǔ)存TRUE和FALSE,是R中布爾數(shù)據(jù)的表現(xiàn)形式鹿榜。鍵入方式 ? ? ?TRUE或FALSE ? ? 海雪,R默認(rèn)將 ?T ?和 ?F ?當(dāng)做TRUE和FALSE的縮寫(xiě)。
5舱殿、復(fù)數(shù)類(lèi)型和原始類(lèi)型
特點(diǎn):這兩種數(shù)據(jù)類(lèi)型使用較少奥裸。書(shū)寫(xiě)規(guī)范:復(fù)數(shù)類(lèi)型為 ?數(shù)字+數(shù)字i ?;原始類(lèi)型為 ? raw(數(shù)字)沪袭。
屬性(attribute)
定義:屬性是加給R對(duì)象的額外信息湾宙,不影響R的取值,在一些函數(shù)運(yùn)算中會(huì)根據(jù)對(duì)象的屬性決定是否進(jìn)行特定操作冈绊∠丽可以將屬性理解為元數(shù)據(jù)(metadata),作用就是將與該R對(duì)象的相關(guān)信息以便捷的方式儲(chǔ)存起來(lái)并附加給該對(duì)象死宣。
可以用attributes函數(shù)查看對(duì)象有哪些屬性伟恶,NULL表示空值,即沒(méi)有任何意義毅该。
原子向量最常見(jiàn)的三種屬性為:名稱(chēng)(name)博秫、維度(dim)和類(lèi)(class)
每個(gè)屬性都有相應(yīng)的輔助函數(shù)潦牛,上述三種屬性的輔助函數(shù)為:names(),dim()和class()挡育。
1罢绽、names函數(shù):可以將一串字符向量賦給對(duì)象。字符向量的長(zhǎng)度應(yīng)該等于對(duì)象的長(zhǎng)度静盅。每個(gè)字符元素對(duì)應(yīng)于對(duì)象中相應(yīng)位置的元素良价。要想一次性刪除names,可以將NULL賦給names函數(shù)蒿叠。
2、dim函數(shù):dim可將維度屬性賦給原子向量(原子向量是一維向量)使其成為n維數(shù)組(array)市咽。
函數(shù)dim(x痊银,y),x表示行施绎,y表示列溯革。填充數(shù)組的過(guò)程,先填充列谷醉,再填充行致稀。除了dim函數(shù)也可以選擇matrix函數(shù)和array函數(shù),這兩種函數(shù)有更多的參數(shù)俱尼,可以調(diào)節(jié)運(yùn)算過(guò)程抖单。
矩陣
矩陣將數(shù)值存儲(chǔ)在二維數(shù)組中。對(duì)應(yīng)的函數(shù)為matrix遇八。
matrix可以設(shè)定的參數(shù):行數(shù)(nrow)矛绘、列數(shù)(ncol),先填滿列(byrow=FALSE)
數(shù)組
array函數(shù)可以生成n維數(shù)組刃永。
類(lèi)(class)
類(lèi)屬于屬性的一種。更改原子向量的維度不會(huì)更改數(shù)據(jù)類(lèi)型斯够,但是會(huì)更改class屬性(類(lèi))囚玫。個(gè)人對(duì)類(lèi)的理解就是將一種類(lèi)型的數(shù)據(jù)以不同種類(lèi)的形式表現(xiàn),就是說(shuō)將數(shù)據(jù)換個(gè)表現(xiàn)形式雳刺,比如說(shuō)將一維的數(shù)據(jù)用二維的方式排列劫灶,將秒數(shù)換算成天數(shù)。
R及R包中有很多類(lèi)雀久,每個(gè)類(lèi)都有自己的幫助頁(yè)面宿稀,在這些類(lèi)中,有一種類(lèi)特別重要赖捌,那就是因子(factor)祝沸。
因子在R中用來(lái)存儲(chǔ)分類(lèi)信息。生成因子的函數(shù)factor可以將向量中的值轉(zhuǎn)化為整數(shù)越庇,存儲(chǔ)在整數(shù)型向量中罩锐,并將兩個(gè)屬性添加到該整型向量,一個(gè)level屬性和一個(gè)類(lèi)屬性卤唉,level儲(chǔ)存顯示因子值的一組標(biāo)簽涩惑,類(lèi)屬性即為factor。
強(qiáng)制轉(zhuǎn)換數(shù)據(jù)類(lèi)型
R的強(qiáng)制轉(zhuǎn)換是指:將不同的數(shù)據(jù)類(lèi)型放入一個(gè)向量竭恬,R會(huì)自動(dòng)講這些數(shù)據(jù)轉(zhuǎn)換為同一種數(shù)據(jù)。
強(qiáng)制轉(zhuǎn)換的規(guī)則:向量中含有字符串熬的,R會(huì)將所有元素轉(zhuǎn)換為字符型痊硕;向量中只含有邏輯型和數(shù)值型元素,R將所有元素轉(zhuǎn)換為數(shù)值型押框。在邏輯型元素轉(zhuǎn)換為數(shù)值型元素時(shí)寿桨,TRUE被轉(zhuǎn)換為1;FALSE被轉(zhuǎn)換為0强戴。對(duì)邏輯型向量進(jìn)行運(yùn)算亭螟,R也會(huì)進(jìn)行強(qiáng)制轉(zhuǎn)換字符型為數(shù)值型。
如果想將一種類(lèi)型的數(shù)據(jù)轉(zhuǎn)換為另一種特定類(lèi)型可以用as系列函數(shù)
列表
列表是R的一種基本對(duì)象類(lèi)型骑歹。列表是將數(shù)據(jù)組織在一維集合中预烙,類(lèi)似于原子型向量,但是列表組織的是R對(duì)象道媚,不是具體的單個(gè)元素扁掸,列表中可以有不同的數(shù)據(jù)類(lèi)型。創(chuàng)建向量需要用list函數(shù)最域。
數(shù)據(jù)框(data frame)
數(shù)據(jù)框是列表的二維版本,每一列是一個(gè)向量薄翅,列與列之間的數(shù)據(jù)類(lèi)型可以不同沙兰,同一列內(nèi)的數(shù)據(jù)類(lèi)型必須相同氓奈。
加載數(shù)據(jù)
.csv文件是逗號(hào)分隔值文件(comma seperated values),是目前最常用的儲(chǔ)存數(shù)據(jù)的純文本文件捡多。
加載外部的數(shù)據(jù)集(dataset):在Rstudio的右上方蓖康,點(diǎn)擊import dataset按鈕,選擇要添加的數(shù)據(jù)類(lèi)型垒手,這里要注意蒜焊,添加數(shù)據(jù)之前,應(yīng)將數(shù)據(jù)文件放置到Rstudio的工作目錄科贬。在導(dǎo)入文件時(shí)泳梆,可以根據(jù)導(dǎo)向設(shè)定一下所要讀取文件的分隔符、是否把第一行當(dāng)做變量名稱(chēng)榜掌、是否默認(rèn)把字符串轉(zhuǎn)換成因子(一般情況下都不要這么干)优妙。可以在控制面板中通過(guò)head函數(shù)或者tail函數(shù)查看前幾行或者后幾行數(shù)據(jù)憎账。
保存數(shù)據(jù)
將數(shù)據(jù)框保存為文本文件如.csv:用writ.csv函數(shù)套硼,函數(shù)的局用法可以通過(guò)?writ.csv查詢(xún)胞皱,在使用該函數(shù)時(shí)有三個(gè)參數(shù)很重要如圖:
保存的文件一般都會(huì)保存到目前的工作目錄下策菜。如果要更改路徑可以選擇Rstudio中Session-set working directory中設(shè)置。在Tools-Global options中也可以設(shè)置default working directory(when not in a project)。我在tools選項(xiàng)中設(shè)置了默認(rèn)工作路徑為D盤(pán)做入,我打開(kāi)放在桌面的 ? ?.R ? ?程序時(shí)冒晰,文本文件并沒(méi)有保存到D盤(pán)同衣,還是保存到了桌面竟块,我想可能是因?yàn)榇藭r(shí)的project就是在桌面的原因吧,如果這個(gè)時(shí)候想要把文本保存到D盤(pán)耐齐,就得借助于Session選項(xiàng)浪秘。
R對(duì)象按其數(shù)據(jù)結(jié)構(gòu)可以分為五種,如下圖埠况,總結(jié)的非常清晰明了:
儲(chǔ)存R的數(shù)據(jù)時(shí)耸携,可以選擇CSV,也可以選擇R自帶文件格式辕翰。選擇CSV的優(yōu)勢(shì)就是文件可以共享夺衍,都能讀出來(lái)。選擇R自帶格式的優(yōu)勢(shì)是占用空間小喜命,但是除了R以外沟沙,基本上不能被其他軟件打開(kāi)。
讀取excel文件時(shí)壁榕,先將excel另存為csv格式矛紫,然后再用R導(dǎo)入,這樣能確保轉(zhuǎn)換導(dǎo)入效果最好牌里。
當(dāng)導(dǎo)入非文本文件時(shí)颊咬,用文件所對(duì)應(yīng)原始軟件的導(dǎo)出功能將該文件導(dǎo)出為文本文件如csv,是將數(shù)據(jù)轉(zhuǎn)錄為文本的最安全也是自由度最高的方法牡辽。如果不能通過(guò)原始軟件導(dǎo)出喳篇,那就只能借助于R包了。