Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/8.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 使用矩阵列收集TIBLE_R_Dplyr_Tidyr_Purrr - Fatal编程技术网

R 使用矩阵列收集TIBLE

R 使用矩阵列收集TIBLE,r,dplyr,tidyr,purrr,R,Dplyr,Tidyr,Purrr,我的tibble看起来像这样: df = tibble(x = 1:3, col1 = matrix(rnorm(6), ncol = 2), col2 = matrix(rnorm(6), ncol = 2)) 它有三列,其中两列包含一个矩阵,每个矩阵有两列。在我的例子中,还有更多的列,这个例子只是为了说明这个问题。我使用“聚集”将这些数据转换为长格式 gather(df, key, val, -x) 但这并不是我想要的结果。它仅堆叠第1列和第2列的第一列

我的tibble看起来像这样:

df = tibble(x = 1:3, col1 = matrix(rnorm(6), ncol = 2), 
                col2 = matrix(rnorm(6), ncol = 2))
它有三列,其中两列包含一个矩阵,每个矩阵有两列。在我的例子中,还有更多的列,这个例子只是为了说明这个问题。我使用“聚集”将这些数据转换为长格式

gather(df, key, val, -x)
但这并不是我想要的结果。它仅堆叠第1列和第2列的第一列,并忽略其余列。我想要的是val包含第1列和第2列的行向量,即val是包含1x2矩阵的矩阵值列。然而,tidyverse似乎无法正确处理矩阵值列。有没有办法达到我想要的结果?理想情况下,使用tidyverse中的例程,一些列是矩阵。它需要转换为适当的data.frame列,然后才能工作

library(dplyr)
library(tidyr) 
do.call(data.frame, df) %>%
       pivot_longer(cols = -x)
或者使用聚集

或者另一种选择是使用c将矩阵转换为向量,然后使用unnest

如果“col1”、“col2”的值位于单个列中

df %>%
    mutate_at(-1,   ~ list(c(.))) %>%
    pivot_longer(cols = -x) %>% 
    unnest(c(value))
有些列是矩阵。它需要转换为适当的data.frame列,然后才能工作

library(dplyr)
library(tidyr) 
do.call(data.frame, df) %>%
       pivot_longer(cols = -x)
或者使用聚集

或者另一种选择是使用c将矩阵转换为向量,然后使用unnest

如果“col1”、“col2”的值位于单个列中

df %>%
    mutate_at(-1,   ~ list(c(.))) %>%
    pivot_longer(cols = -x) %>% 
    unnest(c(value))
完美的do.callible,df%>%pivot\u longercols=-x给了我想要的东西!谢谢,太好了!do.callible,df%>%pivot\u longercols=-x给了我想要的东西!非常感谢。