R語言學習(4)--《R語言入門》(對象的介紹&讀取、存儲、生成數據)

  1. 對象命名
    必須是字母開頭,區分大小寫,後面可以有點. 下劃線_ 數字;
  2. 賦值
    使用<-或者->; 可以賦值的有:數值,一個算式,一個函數的結果
  3. 函數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表示非數字。

  1. 因子,是一個分類變量;
  2. 數組,是一個K維數據表;
  3. 矩陣,是一個二維數據表,數組和矩陣中的所有元素必須是同一類型的;
  4. 數據框,有一個或是幾個向量和因子構成,必須是等長的,但可以是不同的數據類型;
  5. "ts"表示時間序列數據,包含額外屬性,如頻率和時間;
  6. 列表,可以包含任何類型的對象,包括列表。

讀取數據文件:

讀取文本文件(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

存儲數據:

  1. 將對象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)
  1. 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)


發佈了132 篇原創文章 · 獲贊 30 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章