【发布时间】:2021-03-10 20:21:54
【问题描述】:
一个从长到宽的简单示例:
library(tidyverse)
library(data.table)
df <- data.frame(names=letters[1:3],values=1:3)
df %>% pivot_wider(names_from=names,values_from=values)
#works
dt <- data.table(names=letters[1:3],values=1:3)
dt %>% pivot_wider(names_from=names,values_from=values)
Error in data.frame(row = row_id, col = col_id) :
arguments imply differing number of rows: 0, 3
为什么会出现这个错误?
PS:一种解决方法是使用as.data.frame(dt) 删除数据表。
dt %>% as.data.frame %>% pivot_wider(names_from=names,values_from=values)
#works
【问题讨论】:
-
因为 pivot_wider 需要一个数据框对象,但 data.table 具有不同的类,因此您需要在进行数据透视之前将数据表转换为数据框,或者您需要创建您的数据透视表数据表语法中的管道直接在 data.table 上。
-
在GitHub 上报告了该问题。应该很容易解决。
标签: r data.table pivot-table tidyverse tidyr