學習前需掌握
(1)R的賦值符號不是等號,而是<-
(2)在Console 控制臺輸入命令,相當于Linux的命令行
(3)R的代碼都是帶括號的,括號必須是英文的。
(4)顯示工作路徑 getwd()
(5)向量是由元素組成的,元素可以是數字或者字符串。
(6)表格在R語言中改名叫數據框
(7)別只復制代碼,要理解其中的命令、函數的意思。函數或者命令不會用時,除了百度/谷歌搜索以外,用這個命令查看幫助:?read.table
,調出對應的幫助文檔,翻到example部分研究一下。
(8)數據類型(重點只有兩個,剩下的不看)
向量(vector)??重要
矩陣(Matrix)
數組(Array)
數據框(Data frame)??重要
List
正文
一、向量
1.標量和向量的區分
首先明確“元素”的意思,元素指的是數字或者字符串(用chr表示)等,根據它可以區分兩個詞:
標量:一個元素組成的變量(1或者"e")
向量:多個元素組成的變量(c(1,2,3)或者c("e","zai","zi"))
(補充:一個向量是一排有序排列的元素,以后會用到把一個向量作為數據框中的一列的情況。字符串使用時需要加引號)-
理解元素、向量和標量
使用時,一般都會直接給變量定義,也就是“賦值”,字面意思是賦予這個變量一個數值(其實也不一定是數值,還可以是字符串/數據框等等)。
x<- c(1,2,3)
#常用的向量寫法,意為將x定義為由元素1,2,3組成的向量。
x<- 1:10
#從1-10之間所有的整數
x<- seq(1,10,by = 0.5)
#1-10之間每隔0.5取一個數(注意是逗號不是分號)
x<- rep(1:3,times=2)
#1-3 重復2次
QQ圖片20201013180518.png
tips:如果這幾行代碼都打過了,那么x就被賦值了4次,結果就是,第一次賦值被第二次的覆蓋了,第二次的賦值又被第三次的覆蓋了,以此類推,以最后一次為準哦。 -
給變量賦值后
1.png
2.從向量中提取元素
二、數據框
- 練習:
X<-read.csv('doudou.txt')
(1)讀取本地數據
read.table(file = "huahua.txt",sep = "\t",header=T)
#sep = "\t":以Tab作為分隔符,header=T:表示文件數據帶表頭
<-read.table(file = "huahua.txt",sep = "\t",header=T
注意:
(2)設置行名和列名
X<-read.csv('doudou.txt')
#在示例數據里有doudou.txt 注意這里的變量X是一個數據框
colnames(X)
#查看列名
rownames(X)
#查看行名,默認值的行名就是行號,1.2.3.4...
colnames(X)[1]<-"bioplanet"
#有的公司返回數據,左上角第一格為空,R會自動補為x,用這個命令來修改,將第一列列名更改為bioplanet
X<-read.csv(file = "huahua.txt",sep = " ",header =T,row.names=1)
#最后row.names的意思是修改第一列為行名
(3)數據框的導出
write.table(X,file = "yu.txt",sep = ",",quote=F)
#分隔符改為逗號,字符串不加雙引號(默認格式帶由雙引號)quote=F表示輸出的char或factor不用""引住;quote=T則使用""
(4)變量的保存與重新加載
- (這次沒有處理完的數據下次想接著用怎么辦?--學會保存和重新加載。保存的格式是RData。)
-
save.image(file="bioinfoplanet.RData")
#保存當前所有變量 -
save(X,file="test.RData")
#保存其中一個變量 -
load("test.RData")
#再次使用RData時的加載命令
(5)提取元素
-X[x,y]
#第x行第y列
-
X[x,]
#第x行 -
X[,y]
#第y列 -
X[y]
#也是第y列 -
X[a:b]
#第a列到第b列 -
X[c(a,b)]
#第a列和第b列 -
X$
列名#也可以提取列(優秀寫法,而且這個命令還優秀到不用寫括號的地步,并且支持Tab自動補全哦,不過只能提取一列)
(6)【選修部分】直接使用數據框中的變量
提取某兩列作散點圖: -
options(stringsAsFactors = T)
#環境設置函數,設置數據框的讀取方式,將String讀取為Factor -
a <-data.frame(case=paste0("S",1:9),values=runif(9))
paste0("S",1:9)將S與1-9的數字連接起來形成字符,runif(9):產生9個隨機數 plot(a$case,a$values)
省力不用重復輸入a
方法1:attach
將數據框名添加到搜索環境中:attach(a),作圖時就只需輸入列名(連$都不用了)。
attach(a)
-
plot(case,values)
方法2:with
with(a,{ plot(case,values)
x<<-summary(values)
#求和并賦值給x,<<的意思是作為全局變量,也就是出了大括號仍有效。})
x
#運行完后打印x
作業:save(X,file="test.RData")這句代碼如果報錯object X not found,是為什么,應該怎么解決?
回答:沒有定義X變量