R 中的数据类型
了解R中各种数据类型的功能和特性。
R 中的数据类型
数据元素的特性取决于其格式。尽管两个数据看起来相同,但它们的行为可能略有不同。因此,我们需要了解数据类型的特点,并学会在需要时使用这些特性。
在项目中正确使用数据类型可以帮助我们节省时间和精力。掌握如何操作数据类型以及根据需要进行转换,是优秀分析师的关键技能——这将使你区别于经验较少的人。
我们可以使用 class() 方法查看存储数据的变量类型。
1# 检查变量的数据类型 2myNumber <- 4 3print(class(myNumber)) 4 5# 检查数据本身的类型 6class(4)
字符串(字符)
R 中的字符串可以由任意字符组成,只要用单引号 '' 或双引号 "" 包裹即可。例如,即使是数字字符 3,只要加上引号,也会被当作字符串处理。
1my_string <- '3' # 数字数据用引号包裹
这种数据存储方式不仅可以容纳文本,还能包含数字、运算符、括号及其他非字母字符。
is.character() 函数在对象为字符串时返回 TRUE。
注意:
character和string是可互换的术语,指同一种数据类型。
1# 以下所有对象都是字符串/字符类型 2myString <- 'My lucky number is 4.' 3myString1 <- 'The best investment you can make, is an investment in yourself.' 4myString2 <- '[’4’,’5’,’data’,’education’]' 5myString3 <- '4' 6 7print(class(myString1)) # 检查 myString1 对象的类别 8print(class(myString2)) 9print(class(myString3)) 10print(class(myString)) 11 12# 检查对象是否为字符串/字符 13print(is.character(myString))
数值数据类型
数值数据类型包括两个部分:整数和双精度浮点数。is.numeric() 函数在对象为数值时返回 TRUE。
整数
整数是数值类型的一个子类,由正负整数组成,如 1、5、-1、-20 等。在 R 编程语言中,要表示一个整数,必须在数字后添加特殊后缀 L。整数可以通过各种数学运算符(如 +、-、/、* 等)进行操作。
is.integer() 函数在对象为整数时返回 TRUE。
1# 整数以 L 作为后缀 2myInteger <- 3L # 创建整数 3myInteger1 <- -12L # 创建整数 4 5print(myInteger) # 打印对象 6print(myInteger1) # 打印对象 7print(class(myInteger)) # 检查对象的类别 8 9# 检查对象的类别 10print(class(myInteger1)) 11 12# 检查对象是否为整数 13print(is.integer(myInteger)) 14 15# 变量可以使用运算符进行处理 16result <- myInteger * myInteger1 # 两个整数相乘 17print(result) # 打印结果 18print(class(result)) # 打印结果的类别
双精度数据类型
双精度数据类型是数值类型的一个子集,通常以小数形式表示。与整数类似,我们也可以对双精度数执行加法、减法、乘法、除法等运算。
is.double() 函数在对象为双精度数时返回 TRUE。
1# 赋值 2myDouble <- 3.2 3myDouble1 <- -221.23 4 5# 在数学计算中使用数值 6result <- myDouble1 / 20 # 进行计算 7print(result) # 打印结果 8print(class(result)) # 检查结果的数据类型 9 10# 检查对象是否为双精度数 11print(is.double(myDouble1))
逻辑数据类型
逻辑值是二进制值,仅包含两个不同的取值:TRUE 和 FALSE。在二进制中,1 表示 TRUE,0 表示 FALSE。这种表示方式允许我们对逻辑值进行数学运算。
逻辑值在内存中占用的空间远小于直接使用 1 和 0。
R 中的条件判断和比较操作会返回逻辑值,例如:
18 < 9 # 8 是否小于 9? 2is.null(3) # 3 是否为空值?
is.logical() 函数在对象为逻辑值时返回 TRUE。
1# 定义逻辑值 2myLogical <- TRUE 3myLogical1 <- FALSE 4 5# 逻辑值在二进制中,TRUE 代表 1,FALSE 代表 0 6result1 <- myLogical * 3 # 1 * 3 7result2 <- myLogical1 * 12 # 0 * 12 8 9print(result1) # 打印结果1 10print(result2) # 打印结果2 11print(class(result1)) # 检查 result1 的数据类型 12print(class(result2)) # 检查 result2 的数据类型 13 14# 逻辑值的另一个用途是条件表达式 15comparison1 <- (3 * 2 < 5) # 括号内的表达式是一个条件 16print(comparison1) # 条件返回逻辑值:6 是否小于 5?
复数数据类型
复数数据类型广泛用于 R 中的各种数学计算。它包含实部和虚部,虚部用 i 表示(满足 )。我们也可以使用数学运算符来处理这类数据。
is.complex() 函数在对象为复数时返回 TRUE。
1# 复数数据类型包含 i 表达式 2myComplex <- 3i + 3 3myComplex1 <- 7i + 2 4 5result <- myComplex * myComplex1 # 两个复数相乘 6print(result) # 打印结果 7print(is.complex(result)) # 检查结果是否为复数类型
这些数据类型之间可以相互转换,有助于优化数据、节省存储空间并加快数据分析过程。
理解不同类型之间的差异,有助于我们在面对不兼容数据类型问题时做出更明智的决策。