从 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
我想从 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