R 學(xué)習(xí)筆記(1) -- 向量

向量是 R 最基本的變量

R 中變量的類型稱為模式碟嘴。

R 中最基本的變量類型是向量小泉,一維的向量,沒有標(biāo)量晶默,任何一個(gè)看似標(biāo)量的變量其實(shí)都是長度為 1 的向量谨娜。

R 中同一向量中元素類型必須相同航攒,例如整型,浮點(diǎn)型趴梢,字符型漠畜,布爾型。

R 中向量是連續(xù)存儲的坞靶,因此不能插入或者刪除憔狞,如果要實(shí)現(xiàn)插入或刪除必須為向量重新賦值。

R 中向量進(jìn)行運(yùn)算時(shí)彰阴,會自動進(jìn)行循環(huán)補(bǔ)齊瘾敢,短向量循環(huán)補(bǔ)齊到長向量的長度再進(jìn)行運(yùn)算。

R 中的矩陣實(shí)際是一個(gè)長向量。


> x <- c(1,2,3)

> x

[1] 1 2 3

> x + 1

[1] 2 3 4

> # 實(shí)際運(yùn)行的是 (1,2,3) + (1,1,1)

許多 R 的內(nèi)置函數(shù)在對變量進(jìn)行運(yùn)算時(shí)簇抵,也是向量化運(yùn)算庆杜,即對向量的每一個(gè)元素進(jìn)行函數(shù)運(yùn)算。


seq 函數(shù)

比 : 更常用的是 seq(from, to, by) 函數(shù) (sequence)碟摆,來生成等差序列:


> seq(1,10)

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

> seq(from=1,to=10,by=2)

[1] 1 3 5 7 9

> seq(1,10,3)

[1] 1 4 7 10


rep 函數(shù)

rep (指repeat) 函數(shù)形式晃财,rep(x,times) 創(chuàng)建重復(fù) times*length(x) 個(gè)元素的向量,把 x 重復(fù) times 次典蜕。


> rep(8,4)

[1] 8 8 8 8

> rep(c(1,2,3),3)

[1] 1 2 3 1 2 3 1 2 3

> rep(1:3,3)

[1] 1 2 3 1 2 3 1 2 3

> # rep 函數(shù)還有一個(gè) each 參數(shù)断盛,與 times 不同,each 指定 x 交叉重復(fù)的次數(shù)

> rep(c(1,2,3),each=2)

[1] 1 1 2 2 3 3

> rep(c(1,2,3),each=3)

[1] 1 1 1 2 2 2 3 3 3


NULL

NULL 是 R 的一種特殊對象愉舔,沒有模式钢猛,沒有長度,為空轩缤。對向量某個(gè)元素賦值為 NULL 可以刪除該元素厢洞。


篩選

篩選是 R 中最常用的運(yùn)算之一。


> z <- c(5,2,-3,8)

> w <- z[z*z > 8]

> w

[1] 5 -3 8

> z

[1] 5 2 -3 8

> z*z

[1] 25 4 9 64

> # 實(shí)際運(yùn)算是(25,4,9,64) > (8,8,8,8)典奉,結(jié)果也是一個(gè)四元向量躺翻,值為布爾型

> z*z > 8

[1] TRUE FALSE TRUE TRUE

> z[c(TRUE,FALSE,TRUE,TRUE)]

[1] 5 -3 8


ifelse()

向量化的 ifelse() 函數(shù), ifelse(b,u,v), b 是布爾型向量,u,v 都是向量卫玖。


> x <- c(5,2,9,12)

> ifelse(x > 6, 2*x, 3*x)

[1] 15 6 18 24

> # 效果相當(dāng)于 ifelse(c(FALSE,FALSE,TRUE,TRUE),c(10,4,18,24),c(15,6,27,36))公你,但實(shí)際 R 使用“惰性求值”,只有在需要時(shí)表達(dá)式才會計(jì)算假瞬,否則不計(jì)算陕靠。

相對于標(biāo)準(zhǔn)的 if-then-else 結(jié)構(gòu),ifelse() 是向量化語句脱茉,因此有可能快很多剪芥。


測試向量相等

不能直接用 ==,因?yàn)?== 是一個(gè)向量化運(yùn)算琴许,可以結(jié)合 all() 函數(shù)税肪。


> x <- 1:3

> y <- c(1,3,4)

> x == y

[1] TRUE FALSE FALSE

> all(x==y)

[1] FALSE

可以簡單地使用 identical() 函數(shù)。


> identical(x,y)

[1] FALSE

identical() 是判斷兩個(gè)向量是否完全相同榜田,包括類型是否相同益兄。使用 identical() 要小心,看如下例子:


> x <- 1:3

> y <- c(1,2,3)

> identical(x,y)

[1] FALSE

> # 符號 : 產(chǎn)生的是整數(shù)箭券,而 c() 產(chǎn)生的是浮點(diǎn)數(shù)

> typeof(x)

[1] "integer"

> typeof(y)

[1] "double"

連接函數(shù) c()

如果傳遞到 c() 中的數(shù)據(jù)具有不同類型净捅,則它們將被降級為同一類型,該類型最大限度地保留它們的共同特性辩块。


> c(5,2,'abc')

[1] "5" "2" "abc"

> c(5,2,list(a=1,b=4))

[[1]]

[1] 5

[[2]]

[1] 2

$a

[1] 1

$b

[1] 4

與 Python 不同蛔六,c() 函數(shù)對向量有扁平化的效果荆永。


> c(5,2,c(1.5,6))

[1] 5.0 2.0 1.5 6.0


奇怪的東西

在謝益輝主筆的《R語言忍者秘笈》中看到幾個(gè)例子,由于計(jì)算機(jī)存儲數(shù)據(jù)精度的問題国章,有些運(yùn)算會出現(xiàn)莫名其妙的結(jié)果:

> x <- seq(0,1,0.1)
> x
 [1] 0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0
> y <- c(0,0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1)
> y
 [1] 0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0
> x == y
 [1]  TRUE  TRUE  TRUE FALSE  TRUE  TRUE FALSE FALSE  TRUE  TRUE  TRUE
> 0.3 - 0.7 + 0.4 == 0
[1] FALSE
> sqrt(2)^2 == 2
[1] FALSE

具有新想法的人在其想法實(shí)現(xiàn)之前是個(gè)怪人屁魏。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市捉腥,隨后出現(xiàn)的幾起案子氓拼,更是在濱河造成了極大的恐慌,老刑警劉巖抵碟,帶你破解...
    沈念sama閱讀 210,914評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件桃漾,死亡現(xiàn)場離奇詭異,居然都是意外死亡拟逮,警方通過查閱死者的電腦和手機(jī)撬统,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,935評論 2 383
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來敦迄,“玉大人恋追,你說我怎么就攤上這事》N荩” “怎么了苦囱?”我有些...
    開封第一講書人閱讀 156,531評論 0 345
  • 文/不壞的土叔 我叫張陵,是天一觀的道長脾猛。 經(jīng)常有香客問我撕彤,道長,這世上最難降的妖魔是什么猛拴? 我笑而不...
    開封第一講書人閱讀 56,309評論 1 282
  • 正文 為了忘掉前任羹铅,我火速辦了婚禮,結(jié)果婚禮上愉昆,老公的妹妹穿的比我還像新娘职员。我一直安慰自己,他們只是感情好跛溉,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,381評論 5 384
  • 文/花漫 我一把揭開白布焊切。 她就那樣靜靜地躺著,像睡著了一般倒谷。 火紅的嫁衣襯著肌膚如雪蛛蒙。 梳的紋絲不亂的頭發(fā)上糙箍,一...
    開封第一講書人閱讀 49,730評論 1 289
  • 那天渤愁,我揣著相機(jī)與錄音,去河邊找鬼深夯。 笑死抖格,一個(gè)胖子當(dāng)著我的面吹牛诺苹,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播雹拄,決...
    沈念sama閱讀 38,882評論 3 404
  • 文/蒼蘭香墨 我猛地睜開眼收奔,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了滓玖?” 一聲冷哼從身側(cè)響起坪哄,我...
    開封第一講書人閱讀 37,643評論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎势篡,沒想到半個(gè)月后翩肌,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,095評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡禁悠,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,448評論 2 325
  • 正文 我和宋清朗相戀三年念祭,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片碍侦。...
    茶點(diǎn)故事閱讀 38,566評論 1 339
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡粱坤,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出瓷产,到底是詐尸還是另有隱情站玄,我是刑警寧澤,帶...
    沈念sama閱讀 34,253評論 4 328
  • 正文 年R本政府宣布濒旦,位于F島的核電站蜒什,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏疤估。R本人自食惡果不足惜灾常,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,829評論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望铃拇。 院中可真熱鬧钞瀑,春花似錦、人聲如沸慷荔。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,715評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽显晶。三九已至贷岸,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間磷雇,已是汗流浹背偿警。 一陣腳步聲響...
    開封第一講書人閱讀 31,945評論 1 264
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留唯笙,地道東北人螟蒸。 一個(gè)月前我還...
    沈念sama閱讀 46,248評論 2 360
  • 正文 我出身青樓盒使,卻偏偏與公主長得像,于是被迫代替她去往敵國和親七嫌。 傳聞我的和親對象是個(gè)殘疾皇子少办,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,440評論 2 348

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

  • 在挖掘分析的過程當(dāng)中對字符串的處理是極為重要的,且出現(xiàn)也較為頻繁诵原,R語言作為當(dāng)前最為流行的開源數(shù)據(jù)分析和可視化平臺...
    果果哥哥BBQ閱讀 5,797評論 0 8
  • 一英妓、基礎(chǔ) R是一種語法非常簡單的表達(dá)式語言(expression language),大小寫敏感。 可以在R環(huán)境下...
    多了去的YangXuLei閱讀 2,169評論 1 3
  • 《R語言入門》的讀書筆記 本書的重點(diǎn)內(nèi)容及感悟: 第一章 導(dǎo)言 1绍赛、R是一個(gè)有著統(tǒng)計(jì)分析功能及強(qiáng)大作圖功能的軟件系...
    格式化_001閱讀 12,581評論 0 9
  • 周五去了職高趣味運(yùn)動會 下午學(xué)府聽課 周四學(xué)府機(jī)房檢查 下午新合三源開車去 周三畢浦片區(qū)4校 周二橫村三校 周一給...
    由里世界閱讀 355評論 0 0
  • 注:本筆記來自安全牛課堂鞋拟,感謝倪群主,感謝苑老師惹资! 補(bǔ)充:最后的一個(gè)工具非常強(qiáng)大贺纲!可以多學(xué)幾次。 類似WCE的工具...
    FKTX閱讀 247評論 0 0