在列表列上使用pivot_longer

时间:2020-01-20 19:55:02

标签: r tidyr

我正在尝试使用pivot_longer包中的tidyr将多个列表列彼此堆叠,但是我一直遇到错误。这是一个简单的例子...

tibble(
  date = c(rep(1,500), rep(2,500)),
  size = runif(1000,10,10000),
  var1 = rnorm(1000),
  var2 = rnorm(1000)
) %>%
  group_by(date) %>%
  nest() %>%
  rename(all = data) %>%
  mutate(
    not_tiny = map(all, filter, size >= 1000),
    large = map(all, filter, size >= 5000)
  ) %>%
  pivot_longer(c(all, not_tiny, large), names_to = "subset", values_to = "data")

如果我尝试运行此命令,则错误提示

Error: No common type for `all` <list_of<
  tbl_df<
    size: double
    var1: double
    var2: double
  >
>> and `not_tiny` <list>.

所需的输出是

# A tibble: 6 x 3
# Groups:   date [2]
   date subset   data              
  <dbl> <chr>    <list>            
1     1 all      <tibble [500 × 3]>
2     2 all      <tibble [500 × 3]>
3     1 not_tiny <tibble [448 × 3]>
4     2 not_tiny <tibble [451 × 3]>
5     1 large    <tibble [239 × 3]>
6     2 large    <tibble [264 × 3]>

这是gather所取代的不再受支持的pivot_longer函数的输出。任何想法将不胜感激。

0 个答案:

没有答案