8.R数据类型的性质


(学习资料参考北京大学李东风老师《R语言教程》)

8 R数据类型的性质

8.1 存储模式与基本类型

  1. R的变量可以存储多种不同的数据类型, 可以用 typeof() 函数来返回一个变量或表达式的类型。比如:
typeof(1:3)

输出结果如下:integer基本数据类型
在这里插入图片描述

typeof(c(1,2,3))

结果如下:double双精度浮点型

typeof(c(1, 2.1, 3))

结果如下:

typeof(c(TRUE, NA, FALSE))

结果如下:logical逻辑型

typeof('Abc')

结果如下:character字符型
在这里插入图片描述

typeof(factor(c('F', 'M', 'M', 'F')))

结果如下:

注意因子的结果是 integer 而不是因子。 函数 mode()storage.mode() 以及 typeof() 类似, 但返回结果有差别。 这三个函数都是与存储类型有关, 不依赖于变量和表达式的实际作用。

R中数据的最基本的类型包括logical, integer, double, character, complex, raw, 其它数据类型都是由基本类型组合或转变得到的。 character类型就是字符串类型, raw类型是直接使用其二进制内容的类型。 为了判断某个向量 x 保存的基本类型, 可以用 is.xxx() 类函数, 如 is.integer(x), is.double(x), is.numeric(x), is.logical(x), is.character(x), is.complex(x), is.raw(x)其中 is.numeric(x) 对 integer 和 double 内容都返回真值。

  1. 在R语言中数值一般看作double, 如果需要明确表明某些数值是整数, 可以在数值后面附加字母L,如:
is.integer(c(1, -3))

输出结果FALSE,说明不是基本型

is.integer(c(1L, -3L))

输出结果TRUE,说明是基本型
如下:
在这里插入图片描述

  1. 整数型的缺失值是 NA, 而double型的特殊值除了 NA 外, 还包括 Inf, -InfNaN其中 NaN(无定义的数) 也算是缺失值, Inf(无穷大) 和 -Inf(负无穷大) 不算是缺失值。 如:
c(-1, 0, 1)/0

is.na(c(-1, 0, 1)/0)

这里是判断是否为缺失值,FALSE则不是缺失值,TRUE则是缺失值。
在这里插入图片描述
对double类型,可以用 is.finite() 判断是否有限值, NAInf, -InfNaN 都不是有限值; 用 is.infinite() 判断是否Inf-Infis.na() 判断是否 NANaNis.nan() 判断是否 NaN

严格说来, NA 表示逻辑型缺失值, 但是当作其它类型缺失值时一般能自动识别。NA_integer_ 是整数型缺失值, NA_real_ 是double型缺失值, NA_character_ 是字符型缺失值。

  1. 在R的向量类型中, integer类型、double类型、logical类型、character类型、还有complex类型和raw类型称为原子类型(atomic types), 原子类型的向量中元素都是同一基本类型的。 比如, double型向量的元素都是double或者缺失值。 除了原子类型的向量, 在R语言的定义中, 向量还包括后面要讲到的列表(list), 列表的元素不需要属于相同的基本类型, 而且列表的元素可以不是单一基本类型元素。 用typeof()函数可以返回向量的类型, 列表返回结果为"list":
typeof(list("a", 1L, 1.5))


原子类型的各个元素除了基本类型相同, 还不包含任何嵌套结构,如:

c(1, c(2,3, c(4,5)))

在这里插入图片描述

8.2 类属

  1. R具有一定的面向对象语言特征, 其数据类型有一个class属性, 函数 class()可以返回变量类型的类属, 比如:
typeof(factor(c('F', 'M', 'M', 'F'))) #查看数据细类
mode(factor(c('F', 'M', 'M', 'F'))) #查看数据大类
storage.mode(factor(c('F', 'M', 'M', 'F')))
class(factor(c('F', 'M', 'M', 'F'))) #查看变量的类
class(as.numeric(factor(c('F', 'M', 'M', 'F'))))

输出结果如下:
(以上,integer整数型,numeric浮点数,factor是因子,这里和具体数据类型有关…

  1. R有一个特殊的 NULL 类型, 这个类型只有唯一的一个 NULL 值, 表示不存在。 要把NULL与NA区分开来, NA是有类型的(integer、double、logical、character等), NA表示存在但是未知。 用 is.null() 函数判断某个变量是否取 NULL

8.3 类型转换

可以用as.xxx()类的函数在不同类型之间进行强制转换。 如(把FALSE和TRUE转换成数字):

as.numeric(c(FALSE, TRUE))

在这里插入图片描述
再如把1-4开根号,得到的数字转换成字符:

as.character(sqrt(1:4))

在这里插入图片描述
类型转换也可能是隐含的,比如, 四则运算中数值会被统一转换为double类型, 逻辑运算中运算元素会被统一转换为logical类型。 逻辑值转换成数值时,TRUE转换成1, FALSE转换成0。

在用 c() 函数合并若干元素时, 如果元素基本类型不同, 将统一转换成最复杂的一个,复杂程度从简单到复杂依次为 logical<integer<double<character。 如:

c(FALSE, 1L, 2.5, "3.6")

都会转换成逻辑值
在这里插入图片描述
不同类型参与要求类型相同的运算时,也会统一转换为最复杂的类型, 如:

TRUE + 10
paste("abc", 1)

输出结果如下:
在这里插入图片描述

8.4 属性

除了 NULL 以外, R的变量都可以看成是对象, 都可以有属性。 在R语言中, 属性是把变量看成对象后, 除了其存储内容(如元素)之外的其它附加信息, 如维数、类属等。 对象x的所有属性可以用 attributes() 读取, 如:

x <- table(c(1,2,1,3,2,1)); print(x)

attributes(x)

得到有关x表格的属性:
dim是维数,dimnames是
在这里插入图片描述
也可以用attributes()函数修改属性, 如:

attributes(x) <- NULL
x

在这里插入图片描述
如上修改后x不再是数组,也不是table。

8.5 str()函数

print() 函数可以显示对象内容。 如果内容很多, 显示行数可能也很多。 用str() 函数可以显示对象的类型和主要结构及典型内容。例如:

s <- 101:200
attr(s,'author') <- '李小明'
attr(s,'date') <- '2016-09-12'
str(s)

输出结果如下:
在这里插入图片描述

8.6 关于赋值

要注意的是, 在R中赋值本质上是把一个存储的对象与一个变量名联系在一起(binding), 多个变量名可以指向同一个对象。 对于基本的数据类型如数值型向量, 两个指向相同对象的变量当一个变量被修改时自动制作副本,如:

x <- 1:5
y <- x
y[3] <- 0
x

在这里插入图片描述
再看一下y是什么?

y

在这里插入图片描述
这里如果y没有与其它变量指向同一对象, 则修改时直接修改该对象而不制作副本。

但是对于有些比较复杂的类型, 两个指向同一对象的变量是同步修改的。 这样的类型的典型代表是闭包(closure), 它带有一个环境,环境的内容是不自动制作副本的。(这里要再看看??)

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
read.table()函数是R语言中用于从文本文件读取数据的函数,它有许多参数可以控制函数的行为。下面是read.table()函数的参数及其性质的介绍: 1. file:要读取的文件名或URL地址。 2. header:一个逻辑值,指示是否在文件中包含列名。默认值为FALSE。 3. sep:一个字符值,指示列之间的分隔符。默认值为" ",表示空格分隔符。 4. row.names:一个识别行的向量,可以是数字或字符值。默认值为NULL。 5. col.names:一个识别列的向量,可以是数字或字符值。默认值为NULL,表示从文件中自动获取列名。 6. colClasses:一个向量,指示每个列的数据类型。默认值为NULL,表示自动推断列的数据类型。 7. nrows:一个整数值,指示要读取的行数。默认值为-1,表示读取所有行。 8. skip:一个整数值,指示要跳过的行数。默认值为0。 9. na.strings:一个字符向量,指示如何处理缺失值。默认值为"NA"。 10. comment.char:一个字符值,指示注释字符。默认值为"",表示无注释。 11. quote:一个字符值,指示引用字符。默认值为"\"",表示双引号。 12. dec:一个字符值,指示小数点的表示方式。默认值为"."。 13. fill:一个逻辑值,指示是否填充不完整的行。默认值为FALSE。 14. stringsAsFactors:一个逻辑值,指示是否将字符向量转换为因子。默认值为TRUE。 这些参数可以根据需要进行设置,以控制read.table()函数的行为。例如,如果你的文件包含列名,则可以将header参数设置为TRUE,以便在读取文件时正确识别列名。如果你的文件包含缺失值,则可以使用na.strings参数来指定如何处理这些值。如果你的文件包含注释行,则可以使用comment.char参数来指定注释字符。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值