📜  R 中的数据类型转换

📅  最后修改于: 2022-05-13 01:54:24.428000             🧑  作者: Mango

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。双引号在从字符类型转换为逻辑类型时被删除。

例子:

电阻

# value assignment
age <- 20
pwd <- "FALSE"
  
# Converting type
as.logical(age)
as.logical(pwd)

输出:

[1] TRUE
[1] FALSE

数字或逻辑到字符类型:

任何字符类型值始终用双引号( ” “ )括起来。因此,将数字类型的 20 转换为字符类型的“20”。类似地,将逻辑类型的 FALSE 转换为字符类型会得到“FALSE”。



例子:

电阻

# value assignment
age <- 20
pwd <- FALSE
  
# Converting type
as.character(age)
as.character(pwd)

输出:

[1] "20"
[1] "FALSE"

字符或逻辑到数字类型:

  “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 个样本向量转换为单个矩阵。向量的元素按行主要顺序填充



我们使用以下语法将 2 个样本向量转换为单个矩阵。向量的元素按列主要顺序填充

例子:

电阻

# 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"    

数据帧的向量:

在下面的代码中,在将我们的样本向量转换为数据帧时,元素以列优先顺序填充。第一个向量成为第一列, 第二个向量成为第二列。

例子:

电阻



# 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 行,然后我们使用了下面的语法 它将矩阵转换为一个长向量。矩阵的元素按列优先顺序访问。

例子:

电阻

# 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 行,然后我们使用下面的语法将矩阵转换为数据帧。矩阵的元素按列优先顺序访问。

例子:

电阻

# 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

数据框到矩阵:

在下面的代码中,我们创建了一个包含不同类型元素的示例数据帧,然后我们使用了下面的语法将数据帧转换为字符类型的矩阵,这意味着矩阵的每个元素都是字符类型的。

例子:

电阻

# 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"