R 中的数据类型转换
先决条件: R 中的数据类型
数据类型转换是将一种类型的数据转换为另一种类型的数据的过程。 R 编程语言只有 3 种数据类型:数字、逻辑、字符。在本文中,我们将看到如何在 R 编程语言中转换数据类型
由于 R 是弱类型语言或动态类型语言,因此 R 语言会根据分配给变量的值自动创建数据类型。我们在下面的代码中看到了这一点:
R
# value assignment
name <- "GeeksforGeeks"
age <- 20
pwd <- FALSE
# type checking
typeof(name)
typeof(age)
typeof(pwd)
R
# value assignment
age <- 20
pwd <- "FALSE"
# Converting type
as.logical(age)
as.logical(pwd)
R
# value assignment
age <- 20
pwd <- FALSE
# Converting type
as.character(age)
as.character(pwd)
R
# value assignment
age <- "20"
pwd <- FALSE
# Converting type
as.numeric(age)
as.numeric(pwd)
R
# 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)
R
# sample vectors
vector1 <- c('red', 'green', "blue", "yellow")
vector2 <- c(1, 2, 3, 4)
data.frame(vector1, vector2)
R
# sample matrix
mat<- matrix(c(1:6), nrow = 2)
print("Sample Matrix")
mat
print("After conversion into vector")
as.vector(mat)
R
# sample matrix
mat<- matrix(c(1:6), nrow = 2)
print("Sample Matrix")
mat
print("After conversion into Dataframe")
as.data.frame(mat)
R
# 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] "character"
[1] "double"
[1] "logical"
我们已经使用typeof(value)函数来检查上面代码中分配给变量的值的类型。
R 中的数据类型转换
数字或字符到逻辑类型:
任何不为0 的数值在转换为 Logical 类型时都会转换为TRUE。这里 “20”是一个非零数值。因此,它被转换为TRUE 。
“FALSE”是一种字符类型,转换为逻辑类型的 FALSE。双引号在从字符类型转换为逻辑类型时被删除。
Syntax: 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”。
Syntax: as.character(value)
例子:
电阻
# value assignment
age <- 20
pwd <- FALSE
# Converting type
as.character(age)
as.character(pwd)
输出:
[1] "20"
[1] "FALSE"
字符或逻辑到数字类型:
Syntax: 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 个样本向量转换为单个矩阵。向量的元素按行主要顺序填充。
Syntax: rbind(vector1, vector2, vector3…..vectorN)
我们使用以下语法将 2 个样本向量转换为单个矩阵。向量的元素按列主要顺序填充。
Syntax: 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"
数据帧的向量:
在下面的代码中,在将我们的样本向量转换为数据帧时,元素以列优先顺序填充。第一个向量成为第一列, 第二个向量成为第二列。
Syntax: 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 行,然后我们使用了下面的语法 它将矩阵转换为一个长向量。矩阵的元素按列优先顺序访问。
Syntax: 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 行,然后我们使用下面的语法将矩阵转换为数据帧。矩阵的元素按列优先顺序访问。
Syntax: 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
数据框到矩阵:
在下面的代码中,我们创建了一个包含不同类型元素的示例数据帧,然后我们使用了下面的语法将数据帧转换为字符类型的矩阵,这意味着矩阵的每个元素都是字符类型的。
Syntax: 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"