您好,登錄后才能下訂單哦!
這篇文章主要介紹了R語言屬性知識點有哪些,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。
屬性(attribute):R中對象具備的特性
特性描述了所代表的內(nèi)容以及R解釋該對象的方式
很多時候兩個對象之間的唯一差別在于它們的屬性不同
屬性 | 描述 |
---|---|
class | 對象的類 |
comment | 對象的注釋,一般用于描述對象的含義 |
dim | 對象的維度 |
dimnames | 與對象的每個維度相關(guān)的名字 |
names | 返回對象的名字屬性.返回結(jié)果取決于對象的類型.對于數(shù)據(jù)框?qū)ο髸祷財?shù)據(jù)框的列名;對于數(shù)組會返回數(shù)組中被命名元素的名字 |
row,names | 對象的行名(dimnames相關(guān)) |
tsp | 對象的起始點,對于時間序列對象有用 |
levels | 因子型變量的水平 |
對于對象x和屬性a:一般來說可以通過a(x)來查詢x的a屬性
大多數(shù)情況下,R中都有一個現(xiàn)成的獲取對象屬性或者改變對象屬性的函數(shù)
(這種改變對象屬性的方法會在當(dāng)前環(huán)境中覆蓋對象的舊屬性,但不會影響閉環(huán)境中的變量屬性)
m = matrix(data = 1:12, nrow = 4, ncol = 3, dimnames = list(c("r1", "r2", "r3", "r4"), c("c1", "c2", "c3")))
通過attributes函數(shù)可以獲得一個包含對象所有屬性的列表
> attributes(m) $dim [1] 4 3 $dimnames $dimnames[[1]] [1] "r1" "r2" "r3" "r4" $dimnames[[2]] [1] "c1" "c2" "c3"
> dim(m) [1] 4 3 > dimnames(m) [[1]] [1] "r1" "r2" "r3" "r4" [[2]] [1] "c1" "c2" "c3"
> colnames(m) [1] "c1" "c2" "c3" > rownames(m) [1] "r1" "r2" "r3" "r4"
可以通過改變屬性將矩陣轉(zhuǎn)化為其他類的對象
例如移除對象的維度屬性
> dim(m) <- NULL > m [1] 1 2 3 4 5 6 7 8 9 10 11 12 > class(m) [1] "integer" > typeof(m) [1] "integer"
創(chuàng)建一個數(shù)組
> (a <- array(1:12, dim = c(3:4))) [,1] [,2] [,3] [,4] [1,] 1 4 7 10 [2,] 2 5 8 11 [3,] 3 6 9 12
定義一個包含相同對象的向量
> (b <- 1:12) [1] 1 2 3 4 5 6 7 8 9 10 11 12
問題:在R總這兩個對象等價嗎?
> a == b [,1] [,2] [,3] [,4] [1,] TRUE TRUE TRUE TRUE [2,] TRUE TRUE TRUE TRUE [3,] TRUE TRUE TRUE TRUE
數(shù)組的每個元素反映的是對兩個對象個元素比較的結(jié)果
用來比較兩個對象的數(shù)據(jù)和維度一甄別兩個對象是否近乎相同,若不相同則會返回其原因
> all.equal(a, b) [1] "Attributes: < Modes: list, NULL >" "Attributes: < Lengths: 1, 0 >" [3] "Attributes: < names for target but not for current >" "Attributes: < current is not list-like >" [5] "target is matrix, current is numeric"
若只是檢查兩個對象是不是完全一致,但不關(guān)心原因可以使用identical函數(shù)
> identical(a, b) [1] FALSE
對于簡單類型,其類和類型是有緊密聯(lián)系的
對于符合型對象,兩者則可能不同
有時候,對象的類會隨著屬性列出.
不過,對于確定的類型(比如矩陣和數(shù)組),類是隱藏的.
可以用class函數(shù)來確定對象的類
可以用typeof函數(shù)查看對象的基本類型
可以改變R對象所屬的類.
例如,因子型向量轉(zhuǎn)換為整型數(shù)組,整型數(shù)組,轉(zhuǎn)換為因子
> (eye.colors <- factor(c("brown", "blue", "blue", "green", "brown", "brown", "brown"))) [1] brown blue blue green brown brown brown Levels: blue brown green > (eye.colors.integer.vector <- unclass(eye.colors)) [1] 2 1 1 3 2 2 2 attr(,"levels") [1] "blue" "brown" "green"
> v <- as.integer(c(1, 1, 1, 2, 1, 1, 2, 2, 3, 1)) > levels(v) <- c("what", "who", "why") > class(v) <- "factor" > v [1] what what what who what what who who why what Levels: what who why
在調(diào)用class函數(shù)或者typedef函數(shù)時,對于有些對象,需要對其進行引用以防止其在調(diào)用時被執(zhí)行
例如:想要查詢符號x,而不是x所指向的對象的類型
> class(quote(v)) [1] "name" > typeof(quote(v)) [1] "symbol"
但并不是所有類型的對象都可以采用該操作
例如:R中的any對象,...對象,字符串對象和允諾對象不能被隔離
(查看允諾對象的類型時會要求執(zhí)行該允諾對象,而這一過程會把它轉(zhuǎn)換為普通對象,從而使我們無法查詢到其類型信息)
感謝你能夠認真閱讀完這篇文章,希望小編分享的“R語言屬性知識點有哪些”這篇文章對大家有幫助,同時也希望大家多多支持億速云,關(guān)注億速云行業(yè)資訊頻道,更多相關(guān)知識等著你來學(xué)習(xí)!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。