在R语言编程中,数据类型决定了变量如何存储和操作,而正确判断和转换数据类型是实现灵活编程的关键。本篇文章将深入探讨R语言中的数据类型、类型判断及类型转换,并配以示例,帮助你快速上手。
一、R语言中的数据类型
R语言支持多种数据类型,常见的包括:
数值型(numeric)
包括整数(integer)和实数(double)。
x <- 3.14
y <- 5L # 后缀 L 表示整数
字符型(character
代表文本数据。
z <- "Hello, R"
逻辑型(logical)
包括TRUE
和FALSE
。
flag <- TRUE
复数型(complex)
表示复数。
complex_num <- 1 + 2i
原子类型(raw)
存储二进制数据。
raw_data <- charToRaw("R")
特殊值
包括NULL
、NA
(缺失值)、NaN
(非数值)和Inf
(无穷大)。
二、类型判断函数
在实际编程中,我们需要判断变量的类型,R提供了一系列类型判断函数:
判断是否属于某类型
is.numeric() # 是不是数值型?
is.character()
is.double()
is.integer()
is.factor()
is.complex()
is.logical()
is.na()
is.data.frame() # 是不是data.frame
is.array()
is.matrix()
is.list()
示例:
x <- 42 # 是不是数值型?
print(is.numeric(x)) # TRUE
print(is.integer(x)) # FALSE,因为默认数字是 double 类型
获取数据类型
class(x) # 返回对象的类
typeof(x) # 返回底层数据类型
mode(x) # 返回存储模式
示例:
y <- 10L
print(class(y)) # "integer"
print(typeof(y)) # "integer"
print(mode(y)) # "numeric"
检查对象的属性
str(x) # 查看结构信息
三、类型转换
当数据类型不满足需求时,可以通过显式转换函数进行转换。
常用类型转换函数
as.numeric() # 转换为数值型
as.character() # 转换为字符型
as.logical() # 转换为逻辑型
as.integer() # 转换为整数型
as.complex() # 转换为复数型
示例:
# 示例 1:数值与字符转换
x <- "123"
num_x <- as.numeric(x)
print(num_x) # 输出:123
print(is.numeric(num_x)) # TRUE
# 示例 2:逻辑值与数值转换
logic_value <- TRUE
num_logic <- as.numeric(logic_value)
print(num_logic) # 输出:1
# 示例 3:非数值字符转换
invalid_num <- as.numeric("abc")
print(invalid_num) # 输出:NA 并产生警告
注意事项
逻辑值转换:TRUE 转换为 1,FALSE 转换为 0。
缺失值(NA):在转换中保留缺失状态。
非数值字符串:转换为 NA 并产生警告。
四、隐式类型转换
R语言中存在隐式类型转换(type coercion),尤其在操作混合数据时。R会根据类型优先级自动进行转换:
优先级顺序:logical < integer < double < character
示例:
x <- c(1, 2, "3")
print(x) # 输出字符向量:c("1", "2", "3")
五、实战案例
data <- c("1", "2", "NA", "4")
numeric_data <- as.numeric(data)
cleaned_data <- numeric_data[!is.na(numeric_data)]
print(cleaned_data) # 输出:1 2 4
案例 2:逻辑操作与转换
results <- c(TRUE, FALSE, TRUE)
numeric_results <- as.numeric(results)
print(sum(numeric_results)) # 输出:2
六、小结
在本篇文章中,我们学习了R语言的:
is.numeric
、class
等)as.numeric
、as.character
等)下期内容
下一节更新“R语言数据清洗”的相关内容