- 對象命名
必須是字母開頭,區分大小寫,後面可以有點. 下劃線_ 數字; - 賦值
使用<-
或者->
; 可以賦值的有:數值,一個算式,一個函數的結果 - 函數ls()用於顯示所有在內存中的對象;函數rm()刪除對象,
刪除對象x:rm(x)
刪除所有對象:rm(list = ls())
找出含有字母m的對象,需要設定選項pattern
,如:ls(pattern = "m")
或者是簡寫ls(pat = "m")
ls.str()
會展示出內存中的所有對象的詳細信息,這時會返回很多信息(太詳細了),如果不需要這麼詳細,那麼可以設定max.level選項(規定了對象信息的級別),具體地:
ls.str(pat = "M", max.level = -1)
對象:
對象的屬性:類型和長度。其中:
- 類型:數值型,字符型,複數型和邏輯型,使用
mode()
函數可以看到。 - 長度:對象中元素的個數,使用
length()
函數可以看到。
Inf
和 -Inf
表示正無窮和負無窮;
NaN
表示非數字。
- 因子,是一個分類變量;
- 數組,是一個K維數據表;
- 矩陣,是一個二維數據表,數組和矩陣中的所有元素必須是同一類型的;
- 數據框,有一個或是幾個向量和因子構成,必須是等長的,但可以是不同的數據類型;
- "ts"表示時間序列數據,包含額外屬性,如頻率和時間;
- 列表,可以包含任何類型的對象,包括列表。
讀取數據文件:
讀取文本文件(ASCII)中的數據,使用read.table () 或 scan 或 read.fwf
,這些基本的數據文件。
區別:
函數read.table()
:創建一個數據框,讀取表格形式的數據。
> mydata <- read.table("test.dat")
> mydata
V1
1 a,b,c
2 3,2,3
> mydata <- read.table("test.dat", sep = ",")
> mydata
V1 V2 V3
1 a b c
2 3 2 3
>
注意:數據框中的每一個變量都將會被命名,如果沒有規定名字,缺省值會被記爲:V1,V2,…;
此外,還可以單獨訪問每個變量,如:mydata$V1,mydata$V2,…
或者mydata[“V1”],mydata[“V2”],…
或者mydata[,1], mydata[,2]
區別:第二種取出的結果是數據框,而第一種和第三種是向量。
scan()
函數讀取較爲靈活,可以指定變量類型,還可以創建不同類型的對象,如果what
被缺省,那麼將創建一個數值型向量。
> mydata <- scan("test.dat" , what = list(""))
Read 2 records
> mydata
[[1]]
[1] "a,b,c" "3,2,3"
#如果用 mydata <- scan("test.dat" , what = list("", 0 , 0))
#表示讀取三個變量,第一個是字符型變量,第二個和第三個是數值型變量
read.fwf
函數可以用來讀取文件種一些固定寬度的格式的數據,如:
> mydata <- read.fwf("test.dat", widths = c(1, 4, 3))
> mydata
V1 V2 V3
1 A 1.50 1.2
2 B 1.55 1.3
3 C 1.60 1.4
存儲數據:
- 將對象x寫入文件中:
> x = matrix(1:9 , 3 , 3)
> x
[,1] [,2] [,3]
[1,] 1 4 7
[2,] 2 5 8
[3,] 3 6 9
> write(x , file = "test.dat" , append = TRUE)
save.image()
或save(list = ls(all = TRUE) , file = ".RData")
生成數據:
#生成規則序列
> x <- 1:9
> x
[1] 1 2 3 4 5 6 7 8 9
> x <- 1:10-1
> x
[1] 0 1 2 3 4 5 6 7 8 9
> seq(1 , 5 ,1)
[1] 1 2 3 4 5
> seq(length = 1 , from = 1, to = 5)
[1] 1
> seq(length = 5 , from = 1, to = 5)
[1] 1 2 3 4 5
> seq(length = 10 , from = 1, to = 5)
[1] 1.000000 1.444444 1.888889 2.333333 2.777778
[6] 3.222222 3.666667 4.111111 4.555556 5.000000
> c(1,23,3,4)
[1] 1 23 3 4
> #通過鍵盤輸入
> x <- scan()
1: 1 2 3 4
5:
Read 4 items
> x
[1] 1 2 3 4
> #使用rep函數創建所有元素相同的向量
> rep(2,5)
[1] 2 2 2 2 2
> #sequence()函數創建一系列連續的整數序列,每個序列都以給定的參數的數值結尾
> sequence(4:6)
[1] 1 2 3 4 1 2 3 4 5 1 2 3 4 5 6
> sequence(c(4,6))
[1] 1 2 3 4 1 2 3 4 5 6
#gl(k,n,length = , labels = c())--共k個水平,每個水平重複n遍,直到湊夠length個爲之,其中labels是每個水平的名稱
> gl(3,5, labels = c("a", "b" , "c"))
[1] a a a a a b b b b b c c c c c
Levels: a b c
> gl(3,5, labels = c("a", "b" , "c"), length = 20)
[1] a a a a a b b b b b c c c c c a a a a a
Levels: a b c
#使用expand.grid()創建數據框,完全搭配出各參數的各水平
> expand.grid(a = c(1,2) , b = c(10, 20) , sex = c("E", "F"))
a b sex
1 1 10 E
2 2 10 E
3 1 20 E
4 2 20 E
5 1 10 F
6 2 10 F
7 1 20 F
8 2 20 F
- 產生隨機數據:
基本形式:rfunc(n,p1,p2,…)表示某分佈func的隨機數r,需要生成n個,決定該分佈函數的的參數值爲p1,p2,…
與之相同地,有密度函數(dfunc),累計概率密度函數,也就是分佈函數(pfunc),分位數函數(qfunc(p,…)其中0<p<1)
最後兩個函數序列可以用來求統計檢驗中的P值或臨界值。
使用對象:
- 向量有兩個參數:類型,長度。
不同類型有各自的缺省值,比如:邏輯型默認是FALSE,字符型默認是“”,數值型默認是0.
> x = vector(mode = "logical" , length = 3)
> x
[1] FALSE FALSE FALSE
> x = vector(mode = "numeric" , length = 2)
> x
[1] 0 0
> x = vector(mode = "character" , length = 3)
> x
[1] "" "" ""
- 因子,不僅包括分類變量本身,還包括變量不同的可能水平。
格式:
factor(x , levels = sort(unique(x), na.last = TRUE),labels =levels , exclude = NA,orderd = is.ordered(x))
其中levels用來指定因子可能的水平,缺省值是向量x中的互異值;
labels用來指定水平的名字;
exclude表示從向量x中剔除的水平值;
ordered 是一個邏輯性選項用來指定因子的水平是否有次序。
factor(1:3)
[1] 1 2 3
Levels: 1 2 3
factor(1:3 , levels = 1:5)
[1] 1 2 3
Levels: 1 2 3 4 5
factor(1:3 , labels = c(“a”,“D”,“C”))
[1] a D C
Levels: a D C
factor(1:5 , exclude = 4)
[1] 1 2 3 5
Levels: 1 2 3 5
![在這裏插入圖片描述](https://img-blog.csdnimg.cn/20200120180254274.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQzNDQ4NDkx,size_16,color_FFFFFF,t_70)