从 acast 函数输出 [r] 创建 table

Create table from acast function ouput [r]

我想从 reshape2 包中的 acast 函数创建一个 table。 我在这里提供了示例,我在其中创建了我需要的结果 'by hand',我需要知道 R 中是否有这样做的功能。

library(tidyverse)
library(reshape2)

mtcars %>% 
  head(6) %>% 
  add_rownames(var = "Names") %>% 
  acast(Names ~ gear)

# What I want to create is 
tibble(
  `3` = c("Hornet 4 Drive", "Hornet Sportabout", "Valiant"),
  `4` = c("Datsun 710", "Mazda RX4", "Mazda RX4 Wag"))

我不确定这是否可行。问题是 tibble 中的列大小不同。例如,对于完整的 mtcars 数据集,“3”列中将有 15 个元素,而“4”列中只有 12 个元素。

这可能会完成工作:

head(mtcars) %>% 
  select(gear) %>% 
  rownames_to_column(var = "model") %>% 
  pivot_wider(names_from = gear, values_from = model) %>% 
  apply(2, unlist)

与@eugene100hickey 的回答类似,但使用 tidyverse 函数。

library(tidyverse)

mtcars %>% 
  select(gear) %>% 
  head(6) %>% 
  rownames_to_column(var = "Names") %>%
  pivot_wider(names_from = gear, values_from = Names, values_fn = list) %>%
  unnest(everything())

#   `4`           `3`              
#  <chr>         <chr>            
#1 Mazda RX4     Hornet 4 Drive   
#2 Mazda RX4 Wag Hornet Sportabout
#3 Datsun 710    Valiant