相关疑难解决方法(0)

tidyverse 类似于 reshape2::melt 可以做所有事情吗?

这个问题的答案记录了 tidyverse 的类似物reshape2::melt()tidyr::pivot_longer()。就目前而言,这是事实,但我仍然发现在 tidyverse 中熔化具有定义的暗名称的矩阵的过程比 tidyverse 等效项方便得多。

例子:

z <- matrix(1:12, ncol=3, 
       dimnames = list(a = 1:4, b = LETTERS[1:3]))
Run Code Online (Sandbox Code Playgroud)

reshape2::melt(z)自动为我提供一个数据框,其中 ID 列名为“a”和“b”,对应于 的元素names(dimnames(z))

我最初在这里有一个有点笨拙的解决方案,但意识到它不起作用。我认为所需的步骤是

  • 存储行维度名称和列维度名称
  • 转换为数据框
  • 将 rowname 添加为名称为“tmp”的列(带有tibble::rownames_to_column("tmp")
  • pivot_longer()with-tmp并设置names_to为列维度名称
  • 将“tmp”重命名为 row_dimension 名称(如果我们使用 NSE 魔法,可以节省一个步骤)

这看起来比 笨重得多melt()。显然我可以编写一个实用函数来封装它,但我想知道我是否缺少一个更紧凑和/或 tidyverse 惯用的解决方案。当数据管道的第一步是矩阵时,其他人会做什么?

r melt tidyr tidyverse

5
推荐指数
1
解决办法
161
查看次数

标签 统计

melt ×1

r ×1

tidyr ×1

tidyverse ×1