学习如何在R中用基础函数和tibble将矩阵转换成数据帧

287 阅读4分钟

在这个简短的教程中,你将学习如何在R中把矩阵 转换为数据框架 。具体来说,你将学习如何使用基础R和软件包tibble来把矩阵转换为数据框架。你将通过4个不同的例子(每种方法各2个)来学习这项任务。

概要

这篇文章的结构如下。首先,你将简要了解tibble和如何安装这个R包。之后,你将得到 "我如何在R中把矩阵转换为数据帧 "的答案。在下一节中,我们将创建一个简单的矩阵。接下来的部分,博文中,将在整个文章的不同例子中转换为数据框架。希望这些例子能加深你对R中矩阵转换的认识。

Two methods to convert a matrix to a dataframe

2种转换矩阵的方法

在第一个例子中,我们将使用基础R来转换矩阵。随后,在将矩阵转换为数据框架时,我们还将添加列名。

在第三个例子中,我们将使用tibble和函数as_tibble() ,将矩阵变为数据框架(即tibble对象)。最后,在将矩阵转换为数据框架时,我们也将使用tibble和setNames() 。在下一个例子中,你将学习如何安装tibble或Tidyverse

安装tibble或Tidyverse

下面是我们如何安装tibble:

install.packages("tibble")

Code language: R (r)

像往常一样,我们使用install.packages() ,并在引号内写上软件包(即 "tible")。注意,我们可以安装Tidyverse包。这个包包含了tibble和其他有用的包。例如,我们可以使用Tidyverse包删除重复的内容,并重命名因子水平。此外,Tibble包可用于向数据框架添加空列向数据框架添加新列,以及更多。

如何在R中把一个矩阵转换为数据框架?

要在R中把矩阵转换为数据框架,你可以使用as.data.frame()函数,例如,要把名为 "MX "的矩阵改为数据框架,你可以使用以下代码:df_m <- as.data.frame(mtx)

在下一节中,我们将使用matrix() 函数来创建一个矩阵。

数据实例

在我们把矩阵改为数据框架之前,我们需要创建一个矩阵。下面是我们如何使用matrix() 函数来创建一个矩阵。

mtx <- matrix(seq(1, 15), nrow = 5)

Code language: HTML, XML (xml)

在上面的代码中,我们使用seq()函数来生成一个数字序列(即从1到15)。此外,我们还创建了5行,使用nrow 参数。下面是生成的矩阵。

create a matrix in R

在下一节中,我们将看一下将我们创建的矩阵转换为数据框架的第一个例子。

例1:用Base R将矩阵转换为数据框架

在R语言中,要将矩阵转换为数据框架,我们可以使用as.data.frame() 函数。

df_mtx <- as.data.frame(mtx)

Code language: R (r)

在上面的代码中,我们只是用这个函数(即as.data.frame() )从矩阵中创建一个数据框架。下面是转换后的数据框架。

将矩阵转换为数据框架

现在,我们已经将矩阵转换为数据框架,我们可以使用例如str() 函数来查看数据的结构。

你可以看到,在上面的输出中,我们有3列数据类型为整数。当然,这是预料之中的(我们创建了一个数字序列的矩阵)。注意我们的列名是如何从V1到V3的。这不是很有信息量,这里有很多选择。首先,我们可以在矩阵中(或在创建矩阵时)为列命名。第二,我们可以重新命名所创建的数据框架的列。在这篇文章中,我们将在转换完矩阵后改变列名。

例2:在R中将矩阵转换为数据框架并添加列名

现在,在转换矩阵后,使用as.data.frame() 函数,我们可以使用colnames() 函数。

df_mtx <- as.data.frame(mtx)
colnames(df_mtx) <- c("A", "B", "C")

Code language: JavaScript (javascript)

在上面的代码块中,我们使用了colnames() 函数并分配了一个字符向量。这个字符向量包含三个列名。这里是转换后的矩阵(即数据框架)。

convert matrix to dataframe

在下一个例子中,我们将继续使用一个已安装的R包:Tibble,将列表转换为数据框

例3:使用Tibble将R中的矩阵转换为数据框架

在本节中,你将学习如何使用另一个软件包将矩阵转换为数据帧:Tibble。下面是如何在R中使用Tibble将矩阵转换为数据帧。

library(tibble)

df_mtx <- mtx %>% 
  as_tibble()

Code language: HTML, XML (xml)

你可能注意到了,我们现在使用这个函数的方式有区别。我们没有像前两个例子那样在括号内加入矩阵,而是使用了管道操作符("%>%")。在管道操作符的左边,我们有矩阵,新的数据框架,而在右边我们使用了函数。下面是我们从矩阵中创建的数据框架。

convert matrix to dataframe

现在,大多数情况下,我们希望有比本例中得到的更好的列名。如前所述,我们可以在创建矩阵时设置列名(和行名)。然而,如果我们已经有了一个没有名字的矩阵,但我们知道列名,我们可以使用setNames()函数和另一个管道。这就是我们将在最后一个例子中看到的情况。

例四:用Tibble和设置列名将矩阵转换为R中的数据框架

下面是我们如何将矩阵转换为数据框架并设置列名的方法。

df_mtx <- mtx %>%
  as_tibble() %>%
  setNames(c("A", "B", "C"))

Code language: JavaScript (javascript)

在上面的代码块中,我们使用了另一个管道(见例3),并添加了函数setNames()来添加列名 "A"、"B "和 "C"。下面是生成的数据框架。

convert matrix to dataframe in R

如前所述,Tibble是Tidyverse的一部分,这意味着我们可以在创建数据框架后使用dplyr来重命名这些列。

总结

在这篇文章中,我们在R中把矩阵转换成了数据框架。更具体地说,我们通过4个不同的例子学习了如何执行这项任务。在前两个例子中,我们使用了基础R,而在最后两个例子中,我们将使用Tidyverse包Tibble。无论我们使用base R还是Tibble将矩阵转换为数据帧,我们都需要设置列名。也就是说,如果我们转换的矩阵没有列名。希望你在本教程中能学到有价值的东西。

如果你有什么想让我在博文中介绍的内容(例如,你需要学习的东西),请在下面留言。如果有任何建议或更正,也请在下面留言。