Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/82.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 模拟矩阵的重塑2::使用pivot_进行熔化_R_Tidyverse_Tidyr_Melt - Fatal编程技术网

R 模拟矩阵的重塑2::使用pivot_进行熔化

R 模拟矩阵的重塑2::使用pivot_进行熔化,r,tidyverse,tidyr,melt,R,Tidyverse,Tidyr,Melt,我只是尝试在2D矩阵上使用pivot_更长时间,以获得ggplot的“整洁”数据。到目前为止,通过reformae2::melt library(tidyverse) library(reshape2) x <- c(1, 2, 3, 4) y <- c(1, 2, 3) Data <- matrix(round(rnorm(12, 10, 4)), nrow = 4, ncol = 3) melt_data <- reshape2::melt(Data)

我只是尝试在2D矩阵上使用pivot_更长时间,以获得ggplot的“整洁”数据。到目前为止,通过
reformae2::melt

library(tidyverse)
library(reshape2)

x <- c(1, 2, 3, 4)
y <- c(1, 2, 3)

Data      <- matrix(round(rnorm(12, 10, 4)), nrow = 4, ncol = 3)
melt_data <- reshape2::melt(Data)

ggplot2::ggplot(meltvec, ggplot2::aes(x = Var1, y = Var2, fill = value)) +
   geom_tile()
库(tidyverse)
图书馆(E2)

x要从矩阵中获取行和列索引以及值的三列数据帧,只需使用
as.data.frame.table()


您想从矩阵而不是data.frame/tibble开始,有什么原因吗?毕竟,TIBLES是ggplot提倡的格式。关于
.data
我认为这取决于您是否使用rlang包中的
.data
:我从一个矩阵开始,因为这是我手头的格式。无论如何,我必须对它进行更长时间的转换,所以我更愿意在一个函数调用中完成所有这些。
matrix_longer <- function(.data){
  stopifnot(is.matrix(.data),
            !is.data.frame(.data))

  .data <- as.data.frame(.data)
  names(.data) <- 1:ncol(.data)

  .data$Var1 =1:nrow(.data)

   pivot_longer(.data,cols = as.character( 1:(ncol(.data)-1)), names_to = "Var2", values_to = "value") %>% 
     arrange(Var2) %>% 
     mutate(Var2=as.numeric(Var2))
 }
own_data <- matrix_longer(Data)

ggplot2::ggplot(own_data, ggplot2::aes(x = Var1, y = Var2, fill = value)) +
   geom_tile()

all(own_data==melt_data)
set.seed(9)
Data <- matrix(round(rnorm(12, 10, 4)), nrow = 4, ncol = 3)

as.data.frame.table(Data, responseName = "value")

   Var1 Var2 value
1     A    A    10
2     B    A     9
3     C    A    17
4     D    A     7
5     A    B    10
6     B    B     0
7     C    B    14
8     D    B     7
9     A    C    17
10    B    C    11
11    C    C     9
12    D    C    14
library(dplyr)

as.data.frame.table(Data, responseName = "value") %>%
  mutate_if(is.factor, as.integer)

   Var1 Var2 value
1     1    1    10
2     2    1     9
3     3    1    17
4     4    1     7
5     1    2    10
6     2    2     0
7     3    2    14
8     4    2     7
9     1    3    17
10    2    3    11
11    3    3     9
12    4    3    14