R語言基礎(chǔ)--向量

R-基礎(chǔ)-向量

  • 運行代碼快捷鍵:ctrl + enter

  • tab 補全

  • 控制臺清屏:ctrl +l

  • 賦值(<-):alt + -

  • 放大字體:tools => global options => appearance => zoom => 150%

  • 符號皆為英文符號

  • ?函數(shù)名,查看幫助文檔

  • 設(shè)置工作目錄

setwd('E:\bioinfo_study\one')#設(shè)置工作目錄
Error: '\o' is an unrecognized escape in character string starting "'E:\bioinfo_study\o" 
##報錯原因,我直接在文件夾那里復(fù)制路徑,里面的\铆惑,R無法識別,手動改/,即可
##其他錯誤還可能有某抓,路徑當(dāng)中的文件夾不存在
setwd('E:/bioinfo_study/one')
getwd()
[1] "E:/bioinfo_study/one"

常量和變量

  • 基本的數(shù)據(jù)類型有數(shù)值型, 邏輯型(TRUE, FALSE)惰瓜,文本(字符串)
> a <- 1:10
> a
 [1]  1  2  3  4  5  6  7  8  9 10
> typeof(a)
[1] "integer"#數(shù)值型 (整型) ##double浮點型
> a <- "good"
> a
[1] "good"
> typeof(a)
[1] "character"#字符型
> a <- TRUE
> typeof(a)
[1] "logical"#邏輯型否副,一般產(chǎn)生自比較

####類型轉(zhuǎn)換
as.numeric() #轉(zhuǎn)化為數(shù)值型
as.logical() #轉(zhuǎn)化為邏輯型
as.character()#轉(zhuǎn)化為字符型
  • 常量:數(shù)值、字符串崎坊、邏輯(TRUE备禀、FALSE)

  • 變量:用來保存輸入的值或者計算得到的值(賦值的對象

    變量都有變量名,R變量名必須以字母、數(shù)字曲尸、下劃線和句點組成赋续, 變量名的第一個字符不能取為數(shù)字。 變量名是區(qū)分大小寫的另患, yY是兩個不同的變量名

    數(shù)據(jù)結(jié)構(gòu)之向量

    • 向量賦值纽乱,及其基礎(chǔ)操作

      1. 賦值
        ####字符串元素,用單引號或者雙引號
        > name<-'xiaohong'
        > name
        [1] "xiaohong" #一個元素的向量
        ####數(shù)值元素
        ##直接寫一個數(shù)字
        > b <- 2
        > b
        [1] 2
        ?
        ####用c()函數(shù)把多個元素或向量組合成一個向量
        #元素以逗號分隔昆箕,元素的序號(下標(biāo))從1開始計數(shù)
        > marks <- c(10, 6, 4, 7, 8)
        > marks
        [1] 10  6  4  7  8
        > x <- c(1:3, 10:13) # 冒號左右都能取到
        > x
        [1]  1  2  3 10 11 12 13
        > x1 <- c(1, 2)
        > x2 <- c(3, 4)
        > x3 <- c(x1, x2) # 2組向量拼成1組鸦列,還是向量(一維的)
        > x3
        [1] 1 2 3 4  
        > print(x3) #顯示向量除了直接輸入向量名,還可以用 print()
        [1] 1 2 3 4
        > name <- c('AA','BB','CC')
        > name
        >[1] "AA" "BB" "CC"
        ?
        ####用seq 生成連續(xù)的數(shù)值
        > x4 <- seq(4)
        > x4
        >    [1] 1 2 3 4
        > x4 <- seq(2:4)
        > x4
        >    [1] 1 2 3
        > x4 <- 2:4 ##可以直接用冒號鹏倘,表示2到4薯嗤,2和4都能取到
        > x4
        >    [1] 2 3 4</pre>
        
      2. 數(shù)值型向量基礎(chǔ)操作
        > length(x3)
        [1] 4
        ####使用 [] 根據(jù)元素的下標(biāo)取值,單獨一個下標(biāo)或者【】里面填起始位置和終止位置第股,冒號連接
        #x[2]取出第二個元素
        #x[2] <- 99 修改第二個元素為99
        #x[c(1,3)] 取出第1应民、3號元素
        > x
        [1]  1  2  3 10 11 12 13
        > x[1:4] 
        [1]  1  2  3 10
        ###which 返回的是滿足條件的元素的下標(biāo)
        > which.max(x)
        [1] 7 #下標(biāo)
        > which.min(x)
        [1] 1 #下標(biāo)
        ##如果用substring是什么效果,這個函數(shù)看名字就知道是在字符串中使用的
        > print(x3)
        [1] 1 2 3 4
        > substring(x3,2,3) 
        [1] "" "" "" ""   #但是也并沒有報錯
        > x3[2:3]
        [1] 2 3
        ?
        #######
        ######四則運算用+ - * / ^表示(加夕吻、減诲锹、乘卵佛、除艾君、乘方),略
        #四則運算時如果有缺失值惨驶,缺失元素參加的運算相應(yīng)結(jié)果元素仍缺失
        #等長向量的運算為對應(yīng)元素兩兩運算
        #兩個不等長向量的四則運算稚矿,規(guī)則是每次從頭重復(fù)利用短的一個庸诱,示例如下
        > x1 <- c(1, 2) #2個元素
        > x4
        [1] 2 3 4 #3個元素
        > x1+x4
        [1] 3 5 5 # 先按下標(biāo)對應(yīng)相加,然后循環(huán)長度短的那個晤揣,即1+4=5
        Warning message: ###兩個向量的長度不是倍數(shù)關(guān)系會發(fā)出警告
        In x3 + x4 :
         longer object length is not a multiple of shorter object length
        ?
        #除法取整
        > 5 %/% 3
        [1] 1
        #取余
        > 5 %% 3
        [1] 2
        ###取余的一個應(yīng)用是桥爽,判斷某數(shù)是不是偶數(shù)、3的倍數(shù)昧识、5的倍數(shù)等
        x %% 2 == 0
        ?
        ######基礎(chǔ)常用統(tǒng)計函數(shù)
        > x <- c(33, 55, 11)
        > sort(x) ##正序
        [1] 11 33 55
        > rev(sort(x))  ##倒序
        [1] 55 33 11
        > order(x) ##正序的下標(biāo)
        [1] 3 1 2
        > sum(x) #和
        [1] 99
        > mean(x) #均值
        [1] 33
        > var(x) #方差
        [1] 484
        > sd(x) #標(biāo)準(zhǔn)差
        [1] 22
        > min(x)
        >    [1] 11
        > max(x)
        >     [1] 55
        > prod(x) #乘積
        >    [1] 19965
        > cumsum(1:5) #1 2 3 4 5累加
        >    [1]  1  3  6 10 15  #一步一步累加的和
        > cumprod(1:5)
        >    [1]   1   2   6  24 120 #一步一步累乘的積
        > sqrt(c(1, 4, 6.25))
        >    [1] 1.0 2.0 2.5  #平方根
        ?
         ######其他函數(shù)
         #如log10
        ?
        > a <- c(1,10,100)
        > a
        >    [1]   1  10 100
        > log10(a)
        >    [1] 0 1 2</pre>
        

      “為了查看這些基礎(chǔ)的數(shù)學(xué)函數(shù)的列表钠四,運行命令help.start(), 點擊鏈接“Search Engine and Keywords”跪楞, 找到“Mathematics”欄目缀去, 瀏覽其中的“arith”和“math”鏈接中的說明”
      --R語言教程

      1. 邏輯型向量

        邏輯值一般產(chǎn)生自比較、判斷

      > c(1, 3, 5) > 2
      [1] FALSE  TRUE  TRUE
      > (1:4) >= (4:1)
      [1] FALSE FALSE  TRUE  TRUE
      > c(1, NA, 3) > 2
      [1] FALSE    NA  TRUE
      > NA == NA
      [1] NA
      ####使用 is.na 判斷值是否是NA
      > is.na(c(1, NA, 3))
      [1] FALSE  TRUE FALSE
      ####比較運算符 <   <=  >  >=  ==  !=  %in%
      ### x %in% y甸祭,判斷x向量中的元素能否在y中找到
      > c(NA,3) %in% c(2,3,4)
      [1] FALSE  TRUE
      > c(3,4) %in% c(2,3,4) ##無論下標(biāo)一致與否缕碎,找到就是true
      [1] TRUE TRUE
      ####
      > match(c(1, 3), c(2,3,4,3))
      [1] NA  2
      
      #####邏輯運算符 與 &   或 |     非 !
      > 1==2&3!=4
      [1] FALSE
      > 1==2|3!=4
      [1] TRUE
      #####使用 all 判斷邏輯向量的所有元素為真池户,全部為真咏雌,則TRUE
      > c(1, NA, 3) > 2
      [1] FALSE    NA  TRUE
      > all(c(1, NA, 3) > 2)
      [1] FALSE
      ####使用 any 判斷邏輯向量的至少有一個元素為真
      > any(c(1, NA, 3) > 2)
      [1] TRUE
      ##返回真值的下標(biāo)
      > which(c(1, NA, 3) > 2)
      [1] 3
      
      #####使用 identical(x,y) 比較xy的內(nèi)容是否完全相同
      > identical(c(1,2,3), c(1,2,NA))
      [1] FALSE
      > identical(c(1,2,3), c(1,2,3))
      [1] TRUE
      #### 使用 duplicated 判斷重復(fù)
      > duplicated(c(1,2,1,3,NA,4,NA))
      [1] FALSE FALSE  TRUE FALSE FALSE FALSE  TRUE #第一次出現(xiàn)不會被認(rèn)為重復(fù)
      ####使用 unique 去重
      > unique(c(1,2,1,3,NA,4,NA))
      [1]  1  2  3 NA  4 #順序還是原來的第一次出現(xiàn)的那個</pre>
      
      1. 字符型向量基礎(chǔ)操作
      > ############################## 拼接 ###############################
       > a <- 1:15
       > a
        [1]  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15
       #####使用 rep 生成重復(fù)的元素凡怎,注意!4ο印栅贴!不是repet()
       > b <- rep("gene",times=15) ##rep("gene",15)也可以
       > b
        [1] "gene" "gene" "gene" "gene" "gene" "gene" "gene" "gene" "gene" "gene" "gene"
       [12] "gene" "gene" "gene" "gene"
       ##### paste 拼接兩個向量
       > paste(b,a)
        [1] "gene 1"  "gene 2"  "gene 3"  "gene 4"  "gene 5"  "gene 6"  "gene 7"  "gene 8" 
        [9] "gene 9"  "gene 10" "gene 11" "gene 12" "gene 13" "gene 14" "gene 15"
       ###注意1:本來a是數(shù)值型斟湃,b是字符串熏迹,paste自動把數(shù)值型向量轉(zhuǎn)換為字符型
       ###注意2:gene和1之間存在空,這是默認(rèn)用空格連接
       ###注意3:及時查看幫助
       #paste (..., sep = " ", collapse = NULL)#語法,可看到默認(rèn)分隔符
       #paste0(..., collapse = NULL)#語法凝赛,這個沒有分隔
       #所以:
       > paste(b,a,sep="")
        [1] "gene1"  "gene2"  "gene3"  "gene4"  "gene5"  "gene6"  "gene7"  "gene8"  "gene9"  "gene10"
       [11] "gene11" "gene12" "gene13" "gene14" "gene15"
       > paste0(b,a)
        [1] "gene1"  "gene2"  "gene3"  "gene4"  "gene5"  "gene6"  "gene7"  "gene8"  "gene9"  "gene10"
       [11] "gene11" "gene12" "gene13" "gene14" "gene15"
       ###再簡化
       > paste0("gene",1:5)
       [1] "gene1" "gene2" "gene3" "gene4" "gene5"
       ###再拓展
       > paste0(c("a","b","c"),seq(3),collapse = "") #collapse參數(shù)是拼成一個元素
       [1] "a1b2c3" ##注意順序注暗,采用一般向量間運算規(guī)則
       ?
       ########################### 大小寫轉(zhuǎn)換 ##############################
       > d <- c("a","b","c")
       > toupper(d)
       [1] "A" "B" "C"
       > tolower(c("PASSWORD"))
       [1] "password"
       ?
       ###################### 取子串 ##################################
       # substr(x, start, stop) 
       > substr("password",1,4)
       [1] "pass"
       > substr(c('JAN07', 'MAR66'), 1, 3)##注意!D沽浴捆昏!是對每個元素取1到3字符,向量長度不變毙沾。與 【】 取子集區(qū)分
       [1] "JAN" "MAR"
       > name <- c('AA','BB','CC')
       > name[2:3]
       [1] "BB" "CC" #向量的長度改變
       > substring(c('JAN07', 'MAR66'), 4)##stop不寫骗卜,默認(rèn)取到最末
       [1] "07" "66"
       ?
       ########################## 拆分 ################################
       語法strsplit(x, split, fixed = FALSE, perl = FALSE, useBytes = FALSE)
        > y <- '10,8,7,abc,&'
       > strsplit(y, ',', fixed=TRUE)[[1]]
       [1] "10"  "8"   "7"   "abc" "&" ##以“,”分隔左胞,TRUE:完全分割
       ?
       ######################## 替換 ####################
       grep(pattern, x, ignore.case = FALSE, perl = FALSE, value = FALSE,
        fixed = FALSE, useBytes = FALSE, invert = FALSE)
       #替換的模式寇仓,操作對象,
       gsub(pattern, replacement, x, ignore.case = FALSE, perl = FALSE,
        fixed = FALSE, useBytes = FALSE)
       > x <- '1, 3; 5'
       > gsub(';', ',', x, fixed=TRUE) #冒號 替換成 逗號烤宙,
       [1] "1, 3, 5"
       > grep(3,x) #抓取x中的3
       [1] 1 #返回數(shù)量
       > grep(3,x,fixed=TRUE)
       [1] 1</pre>
      

      其他

      > c <- 33.3 ##浮點數(shù)
      > typeof(c)
      [1] "double" #浮點型
      > b <- 2
      > b
      [1] 2
      > typeof(b)
      [1] "double"  ##在R語言中數(shù)值一般看作double, 如果需要明確表明某些數(shù)值是整數(shù)遍烦, 可以在數(shù)值后面附加字母L
      > class(b)
      [1] "numeric"
      > d <- 2L #大寫L,換成其他字母不可躺枕,小寫l也不可服猪。
      > class(d)
      [1] "integer" ## 2L是個整型。
      > typeof(d)
      [1] "integer" ##typeof和class都是返回類型拐云,integer和double都是numeric
      > y <- 1:5
      > typeof(y)
      [1] "integer" #整型
      > y2 <- seq(5)
      > typeof(y2)
      [1] "integer" #整型
      > y3 <- c(1,2,3,4,5) #用c()函數(shù)就是浮點型
      > class(y3)
      [1] "numeric"
      > typeof(y3)
      [1] "double"</pre>
      

      貼一個網(wǎng)上的資料:

      https://www.cnblogs.com/csguo/p/7285453.html

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末罢猪,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子叉瘩,更是在濱河造成了極大的恐慌膳帕,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,682評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件房揭,死亡現(xiàn)場離奇詭異备闲,居然都是意外死亡,警方通過查閱死者的電腦和手機捅暴,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,277評論 3 395
  • 文/潘曉璐 我一進店門恬砂,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人蓬痒,你說我怎么就攤上這事泻骤。” “怎么了?”我有些...
    開封第一講書人閱讀 165,083評論 0 355
  • 文/不壞的土叔 我叫張陵狱掂,是天一觀的道長演痒。 經(jīng)常有香客問我,道長趋惨,這世上最難降的妖魔是什么鸟顺? 我笑而不...
    開封第一講書人閱讀 58,763評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮器虾,結(jié)果婚禮上讯嫂,老公的妹妹穿的比我還像新娘。我一直安慰自己兆沙,他們只是感情好欧芽,可當(dāng)我...
    茶點故事閱讀 67,785評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著葛圃,像睡著了一般千扔。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上库正,一...
    開封第一講書人閱讀 51,624評論 1 305
  • 那天曲楚,我揣著相機與錄音,去河邊找鬼诀诊。 笑死洞渤,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的属瓣。 我是一名探鬼主播载迄,決...
    沈念sama閱讀 40,358評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼抡蛙!你這毒婦竟也來了护昧?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,261評論 0 276
  • 序言:老撾萬榮一對情侶失蹤粗截,失蹤者是張志新(化名)和其女友劉穎惋耙,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體熊昌,經(jīng)...
    沈念sama閱讀 45,722評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡绽榛,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,900評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了婿屹。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片灭美。...
    茶點故事閱讀 40,030評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖昂利,靈堂內(nèi)的尸體忽然破棺而出届腐,到底是詐尸還是另有隱情铁坎,我是刑警寧澤,帶...
    沈念sama閱讀 35,737評論 5 346
  • 正文 年R本政府宣布犁苏,位于F島的核電站硬萍,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏围详。R本人自食惡果不足惜朴乖,卻給世界環(huán)境...
    茶點故事閱讀 41,360評論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望短曾。 院中可真熱鬧寒砖,春花似錦赐劣、人聲如沸嫉拐。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,941評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽婉徘。三九已至,卻和暖如春咐汞,著一層夾襖步出監(jiān)牢的瞬間盖呼,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,057評論 1 270
  • 我被黑心中介騙來泰國打工化撕, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留几晤,地道東北人。 一個月前我還...
    沈念sama閱讀 48,237評論 3 371
  • 正文 我出身青樓植阴,卻偏偏與公主長得像蟹瘾,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子掠手,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,976評論 2 355