首页 > 解决方案 > Cast 函数不适用于 sum 函数

问题描述

我最近在尝试使用 cast 函数按组汇总一些变量时遇到了一个问题。

详情如下:

数据框

id  time    variable    value
1   1   x1  5
1   2   x1  3
2   1   x1  6
2   2   x1  2
1   1   x2  6
1   2   x2  5
2   1   x2  1
2   2   x2  4

以下代码运行良好:

subjmeans <- cast(mdata, id~variable, mean)

subjmeans

id  x1  x2
1   4   5.5
2   4   2.5

但是当我用“sum”替换mean函数(内置cast函数)时,即cast(mdata, id~variable, sum)

R 报告以下错误消息:

Error in (function (..., row.names = NULL, check.rows = FALSE, check.names = TRUE,  : 
  arguments imply differing number of rows: 4, 0

我还尝试了其他功能,如“max”、“length”,除了“sum”之外,一切正常。

这非常奇怪,特别是考虑到上周相同的代码与“sum”配合得很好。

最好的兴化

标签: r

解决方案


它工作正常

reshape::cast(mdata, id ~ variable, sum) 
#   id x1 x2
#1  1  8 11
#2  2  8  5

唯一可能的解释是sum从其他加载的包中用相同的函数名屏蔽函数

数据

mdata <- structure(list(id = c(1L, 1L, 2L, 2L, 1L, 1L, 2L, 2L), time = c(1L, 
2L, 1L, 2L, 1L, 2L, 1L, 2L), variable = c("x1", "x1", "x1", "x1", 
"x2", "x2", "x2", "x2"), value = c(5L, 3L, 6L, 2L, 6L, 5L, 1L, 
4L)), class = "data.frame", row.names = c(NA, -8L))

推荐阅读