考虑像这样的代码和输出
mtcars %>% group_by(gear) %>% summarize(cyls=paste(unique(cyl),collapse=','))
# A tibble: 3 x 2
gear cyls
<dbl> <chr>
1 3 6,8,4
2 4 6,4
3 5 4,8,6
对于每个装备 - 我都会得到一个&#34;向量&#34;独特的气缸
用户希望在data.frame中保留操作的结果(例如,每个事件的年龄类别很重要),但是作为向量(用于输入到另一个函数)。
如何重写代码以输出char而不是cyls的向量?以下代码失败。
mtcars %>% group_by(gear) %>% summarize(cyls=unique(cyl))
&#34;输出&#34; shold是一个矢量类型的列,类似于
gear cyls
3 c(6,8,4)
4 c(6,4)
5 c(4,8,6)
答案 0 :(得分:1)
使用基数R我们可以:
(dat=aggregate(cyl~gear,mtcars,unique))
gear cyl
1 3 6, 8, 4
2 4 6, 4
3 5 4, 8, 6
哪里
dat$cyl
$`1`
[1] 6 8 4
$`2`
[1] 6 4
$`3`
[1] 4 8 6
使用dplyr
您必须将最终的tibble强制转换为数据帧才能获得相同的结果
答案 1 :(得分:0)
将cyls
列为如下列表列:
my_df <- mtcars %>% group_by(gear) %>% summarize(cyls=list(unique(cyl)))
my_df$cyls[[1]] # boom dbl vectors for each row stored as a list
[1] 6 8 4