R语言 数据类型转换
数据类型转换是将一种数据类型转换为另一种数据类型的过程。R编程语言只有3种数据类型。数值型、逻辑型、字符型。在这篇文章中,我们将看到如何转换R编程语言中的数据类型。
由于R语言是一种弱类型语言或动态类型语言,R语言会根据分配给变量的值自动创建数据类型。我们在下面的代码中可以窥见一斑。
# value assignment
name <- "GeeksforGeeks"
age <- 20
pwd <- FALSE
# type checking
typeof(name)
typeof(age)
typeof(pwd)
输出
[1] "character"
[1] "double"
[1] "logical"
我们使用 typeof(value) 函数来检查上述代码中分配给变量的值的类型。
R语言中的数据类型转换
数值或字符到逻辑类型
任何不为 0 的数值,在转换为逻辑类型时都会被转换为 TRUE。 这里 “20 “是一个非0的数值。因此,它被转换为 TRUE。
“FALSE “是一个字符类型,在转换时成为逻辑类型的FALSE。从字符类型转换为逻辑类型时,双引号会被删除。
语法: as.logical(value)
例子
# value assignment
age <- 20
pwd <- "FALSE"
# Converting type
as.logical(age)
as.logical(pwd)
输出
[1] TRUE
[1] FALSE
数字型或逻辑型改为字符型。
任何 字符 类型的值都是用 双引号 ( ” “ )括起来的。 因此,数字型的20转换为字符型的 “20”。同样,将逻辑类型的 “FALSE “转换为字符类型的 “FALSE “也是如此。
语法: as.character(value)
例子
# value assignment
age <- 20
pwd <- FALSE
# Converting type
as.character(age)
as.character(pwd)
输出
[1] "20"
[1] "FALSE"
字符型或逻辑型到数字型
语法: as.numeric(value)
字符类型的 “20 “在转换为数字类型时变成了20,只是双引号被去掉了。将逻辑类型转换为数字类型,FALSE-> 0,TRUE-> 1。
例子
# value assignment
age <- "20"
pwd <- FALSE
# Converting type
as.numeric(age)
as.numeric(pwd)
输出
[1] 20
[1] 0
向量到矩阵
在下面的代码中,我们通过使用下面的语法将2个样本向量转换成一个矩阵。向量的元素是按照 行的主要顺序 填充的。
语法 :rbind(vector1, vector2, vector3…..vectorN)
我们通过使用下面的语法将2个样本向量转换成一个单一的矩阵。向量中的元素是以 列为主的顺序 填充的。
语法 :cbind(vector1, vector2, vector3…..vectorN)
例子
# sample vectors
vector1 <- c('red','green',"blue","yellow")
vector2 <- c(1,2,3,4)
print("Row Major Order")
rbind(vector1,vector2)
print("Column Major Order")
cbind(vector1,vector2)
输出
[1] "Row Major Order"
[,1] [,2] [,3] [,4]
vector1 "red" "green" "blue" "yellow"
vector2 "1" "2" "3" "4"
[1] "Column Major Order"
vector1 vector2
[1,] "red" "1"
[2,] "green" "2"
[3,] "blue" "3"
[4,] "yellow" "4"
向量到数据框架
在下面的代码中,在将我们的样本向量转换为数据框架时,元素是按照列的主次顺序填充的。第一个向量成为第一列, 第二个向量成为第二列。
语法: data.frame(vector1, vector2, vector3…..vectorN)
例子
# sample vectors
vector1 <- c('red', 'green', "blue", "yellow")
vector2 <- c(1, 2, 3, 4)
data.frame(vector1, vector2)
输出
vector1 vector2
1 red 1
2 green 2
3 blue 3
4 yellow 4
矩阵到矢量
在下面的代码中,样本矩阵包含从1到6的元素,我们指定 nrows=2 ,这意味着我们的样本矩阵将包含2行,然后我们使用下面的语法 ,将矩阵转换为一个长矢量。矩阵中的元素以列为主的顺序被访问。
语法: as.vector(matrix_name)
例子
# sample matrix
mat<- matrix(c(1:6), nrow = 2)
print("Sample Matrix")
mat
print("After conversion into vector")
as.vector(mat)
输出
[1] "Sample Matrix"
[,1] [,2] [,3]
[1,] 1 3 5
[2,] 2 4 6
[1] "After conversion into vector"
[1] 1 2 3 4 5 6
矩阵到数据框架
在下面的代码中,样本矩阵包含从1到6的元素,我们指定 nrows=2 ,这意味着我们的样本矩阵将包含2行,然后我们使用下面的语法将矩阵转换成数据框架。矩阵中的元素是以列为主的顺序访问的。
语法: as.data.frame(matrix_name)
例子
# sample matrix
mat<- matrix(c(1:6), nrow = 2)
print("Sample Matrix")
mat
print("After conversion into Dataframe")
as.data.frame(mat)
输出
[1] "Sample Matrix"
[,1] [,2] [,3]
[1,] 1 3 5
[2,] 2 4 6
[1] "After conversion into Dataframe"
V1 V2 V3
1 1 3 5
2 2 4 6
数据框架到矩阵
在下面的代码中,我们创建了一个包含不同类型元素的样本数据框,然后我们使用下面的语法将数据框转换为字符类型的矩阵,这意味着矩阵的每个元素都是 字符 类型的。
语法: as.matrix(dataframe_name)
例子
# sample dataframe
df <- data.frame(
serial = c (1:5),
name = c("Welcome","to","Geeks","for","Geeks"),
stipend = c(2000,3000.5,5000,4000,500.2),
stringsAsFactors = FALSE)
print("Sample Dataframe")
df
print("After conversion into Matrix")
as.matrix(df)
输出
[1] "Sample Dataframe"
serial name stipend
1 1 Welcome 2000.0
2 2 to 3000.5
3 3 Geeks 5000.0
4 4 for 4000.0
5 5 Geeks 500.2
[1] "After conversion into Matrix"
serial name stipend
[1,] "1" "Welcome" "2000.0"
[2,] "2" "to" "3000.5"
[3,] "3" "Geeks" "5000.0"
[4,] "4" "for" "4000.0"
[5,] "5" "Geeks" " 500.2"