R语言属性知识点总结及实例

属性(attribute):R中对象具备的特性

特性描述了所代表的内容以及R解释该对象的方式

很多时候两个对象之间的唯一差别在于它们的属性不同

常见的属性

属性 描述
class 对象的类
comment 对象的注释,一般用于描述对象的含义
dim 对象的维度
dimnames 与对象的每个维度相关的名字
names 返回对象的名字属性.返回结果取决于对象的类型.对于数据框对象会返回数据框的列名;对于数组会返回数组中被命名元素的名字
row,names 对象的行名(dimnames相关)
tsp 对象的起始点,对于时间序列对象有用
levels 因子型变量的水平

查询R中对象的属性的标准方法:

对于对象x和属性a:一般来说可以通过a(x)来查询x的a属性

大多数情况下,R中都有一个现成的获取对象属性或者改变对象属性的函数

(这种改变对象属性的方法会在当前环境中覆盖对象的旧属性,但不会影响闭环境中的变量属性)

m = matrix(data = 1:12, nrow = 4, ncol = 3,
      dimnames = list(c("r1", "r2", "r3", "r4"),
              c("c1", "c2", "c3")))

通过attributes函数可以获得一个包含对象所有属性的列表

> 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"

可以通过改变属性将矩阵转化为其他类的对象

例如移除对象的维度属性

> 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"

创建一个数组

> (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

数组的每个元素反映的是对两个对象个元素比较的结果

R中all.equal函数

用来比较两个对象的数据和维度一甄别两个对象是否近乎相同,若不相同则会返回其原因

> 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" 

若只是检查两个对象是不是完全一致,但不关心原因可以使用identical函数

> identical(a, b)
[1] FALSE

对于简单类型,其类和类型是有紧密联系的

对于符合型对象,两者则可能不同

有时候,对象的类会随着属性列出.

不过,对于确定的类型(比如矩阵和数组),类是隐藏的.

可以用class函数来确定对象的类

可以用typeof函数查看对象的基本类型

可以改变R对象所属的类.

例如,因子型向量转换为整型数组,整型数组,转换为因子

> (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

在调用class函数或者typedef函数时,对于有些对象,需要对其进行引用以防止其在调用时被执行

例如:想要查询符号x,而不是x所指向的对象的类型

> class(quote(v))
[1] "name"
> typeof(quote(v))
[1] "symbol"

但并不是所有类型的对象都可以采用该操作

例如:R中的any对象,...对象,字符串对象和允诺对象不能被隔离

(查看允诺对象的类型时会要求执行该允诺对象,而这一过程会把它转换为普通对象,从而使我们无法查询到其类型信息)

到此这篇关于R语言属性知识点总结及实例的文章就介绍到这了,更多相关R语言属性内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • R语言属性知识点总结及实例

    属性(attribute):R中对象具备的特性 特性描述了所代表的内容以及R解释该对象的方式 很多时候两个对象之间的唯一差别在于它们的属性不同 常见的属性 属性 描述 class 对象的类 comment 对象的注释,一般用于描述对象的含义 dim 对象的维度 dimnames 与对象的每个维度相关的名字 names 返回对象的名字属性.返回结果取决于对象的类型.对于数据框对象会返回数据框的列名;对于数组会返回数组中被命名元素的名字 row,names 对象的行名(dimnames相关) tsp

  • R语言字符串知识点总结及实例分析

    在R语言中的单引号或双引号对中写入的任何值都被视为字符串. R语言存储的每个字符串都在双引号内,即使是使用单引号创建的依旧如此. 在字符串构造中应用的规则 在字符串的开头和结尾的引号应该是两个双引号或两个单引号.它们不能被混合. 双引号可以插入到以单引号开头和结尾的字符串中. 单引号可以插入以双引号开头和结尾的字符串. 双引号不能插入以双引号开头和结尾的字符串. 单引号不能插入以单引号开头和结尾的字符串. 有效字符串的示例 以下示例阐明了在 R 语言中创建字符串的规则. a <- 'Start

  • R语言矩阵知识点总结及实例分析

    矩阵是其中元素以二维矩形布局布置的R对象. 它们包含相同原子类型的元素. 虽然我们可以创建一个只包含字符或只包含逻辑值的矩阵,但它们没有太多用处. 我们使用包含数字元素的矩阵用于数学计算. 使用matrix()函数创建一个矩阵. 语法 在R语言中创建矩阵的基本语法是 matrix(data, nrow, ncol, byrow, dimnames) 以下是所使用的参数的说明 数据是成为矩阵的数据元素的输入向量. nrow是要创建的行数. ncol是要创建的列数. byrow是一个逻辑线索. 如果

  • R语言向量知识点及实例讲解

    有常见的六种基本的向量类型 创建向量 设定recursive = T,c函数可以从其他数据结构中递归形成向量 > v <- c(.295, .300, .250, .287, list(.102, .200, .303), recursive = T) > v [1] 0.295 0.300 0.250 0.287 0.102 0.200 0.303 > typeof(v) [1] "double" > v <- c(.295, .300, .250

  • R语言运算符知识点讲解

    运算符 运算符:包含一个或者两个参数的无括号的参数 符号 说明 + - * ^ %% 取模运算 %/% 整除运算 可以定义自己的二元运算符 `%myop%` = function(a, b){ 2*a + 2*b } > 1 %myop% 1 [1] 4 一些特殊的语言结构也是二元运算符 例如:赋值运算符<-,索引[],函数调用max(a, b) 运算顺序 运算符的优先级 (按优先级排序) 运算符 描述 ({ 函数调用和分组表达式 [ [[ 索引 :: ::: 访问命名空间中的变量 $ @ 成

  • R语言数据类型知识点总结

    通常,在使用任何编程语言进行编程时,您需要使用各种变量来存储各种信息. 变量只是保留值的存储位置. 这意味着,当你创建一个变量,你必须在内存中保留一些空间来存储它们. 您可能想存储各种数据类型的信息,如字符,宽字符,整数,浮点,双浮点,布尔等.基于变量的数据类型,操作系统分配内存并决定什么可以存储在保留内存中. 与其他编程语言(如 C 中的 C 和 java)相反,变量不会声明为某种数据类型. 变量分配有 R 对象,R 对象的数据类型变为变量的数据类型.尽管有很多类型的 R 对象,但经常使用的是

  • R语言控制结构知识点总结

    if(condition) true_expression else false_expression if(condition) expression 因为表达式expression, true_expression, false_expression并非总是被执行,因此if函数的类型是special > typeof(`if`) [1] "special" 在R中.条件语句不是向量型运算 如果条件语句是由一个以上的逻辑值组成的向量,那么执行语句时只会用到向量中的第一个元素 x

  • R语言表达式知识点总结

    R提供的组合表达式的结构: 分号 括号 花括号 分离型表达式 x = 1 y = 2 z = 3 x = 1; y = 2; z = 3 括号 括号会返回括号内表达式的执行结果 花括号 花括号用于执行一些列表达式(由换行符或者分号隔开),并返回最后一个表达式的执行结果 {expression_1; expression_2; ... ; expression_ } (笔记:函数花括号内的符号相当于局部变量) 花括号的底层操作是调用{} 到此这篇关于R语言表达式知识点总结的文章就介绍到这了,更多相

  • R语言常量知识点总结

    R语言基本的数据类型有数值型, 逻辑型(TRUE, FALSE),文本(字符串). 支持缺失值,有专门的复数类型. 常量是指直接写在程序中的值. 数值型常量包括整型.单精度.双精度等,一般不需要区分.写法如123, 123.45, -123.45, -0.012, 1.23E2, -1.2E-2等. 为了表示123是整型,可以写成123L. 字符型常量用两个双撇号或两个单撇号包围,如"Li Ming"或'Li Ming'. 字符型支持中文,如"李明"或'李明'. 国

  • R语言操作X轴日期实例讲解

    R语言操作X轴日期: 需要用到程序包library(lubridate):程序包是在R的安装包C:\R-3.4.4\bin\x64\RGui.exe里根据命令安装的 将日期改为xxxx/xx/01: firstDay='2020/02/12' : 可用 day(firstDay)<-01; //此时firstDay的数据为:'2020/02/01':day()是获取日,month()获取月份,year()获取年份 都需要'lubridate'包 可以通过write.table(firstDay,

随机推荐