r-pivot_langer在使用dtplyr时出错



我有一个很大的数据集,我正在尝试使用dtply整理。它由不同位置的大量(>1000(日期值对组成。原始版本使用了pivot_langer,它在dplyr中运行良好,但在dtplr中出现错误。有没有办法解决这个问题,保持dtplyr的性能优势?

这适用于

library(tidyverse)
library(dtplyr)
library(data.table)
my_data_tb <- tribble(
~`date-A`, ~`value-A`, ~`date-B`, ~`value-B`,
"date1", 1, "date2", 2,
"date2", 1, "date3", 2 
)
my_data_tb %>% 
pivot_longer(
cols = everything(),
names_to = c(".value", "grid_square"),
names_sep = "-"
)

但这给出了错误:

my_data_dt <- as.data.table(my_data_tb)
my_data_dt <- lazy_dt(my_data_dt)
my_data_dt %>%
pivot_longer(
cols = everything(),
names_to = c(".value", "grid_square"),
names_sep = "-"
)

错误消息为:

错误:无法对不存在的元素进行子集设置
x位置1和2不存在
i只有0个元素
运行rlang::last_error()查看错误发生的位置
此外:警告消息:
需要2件。7行[1,2,3,4,5,6,7]中用NA填充的缺失件
rlang::last_error()
错误:内部错误:跟踪数据不方正

UPDATE-它现在给出这个错误消息:

UseMethod中的错误("pivot_langer"(:没有适用于"pivot_langer"类对象的方法;c('dtplyr_step_first','dtply_step'(">

顺便说一句,这也有效,但我认为它失去了dtply的性能增益:

my_data_dt %>%
as_tibble() %>%
pivot_longer(
cols = everything(),
names_to = c(".value", "grid_square"),
names_sep = "-"
)

Dtplyr 1.2.0版本现在可以在CRAN上使用,这意味着这个问题现在已经解决了!

对于遇到此错误的任何人,请检查/更新您的dtplyr版本,以确保您正在运行>1.2.0:

install.packages("dtplyr")

(注意。这不是作为tidyverse软件包的一部分更新的,所以请确保单独更新(

https://www.tidyverse.org/blog/2021/12/dtplyr-1-2-0/

https://cran.r-project.org/web/packages/dtplyr/index.html

相关内容

  • 没有找到相关文章

最新更新