r - 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”配合得很好。
最好的兴化
解决方案
它工作正常
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))
推荐阅读
- python - 在 pandas 中使用 group by 时如何找到索引的最小值和最大值?
- javascript - 使用 CSS 隐藏特定的 Dev 元素
- android - 成功 Oauth 2.0 登录 Android 后需要电子邮件地址
- google-colaboratory - 如何跳过解压缩已存在于 google colab 中的文件
- jquery - 为什么为笛卡尔积抛出错误的jquery字符串?
- python - 使用 LineString Python Shapely 将圆分成两部分
- javascript - 反应原生 Firestore:使用无效数据调用的函数 addDoc()
- pandas - 用索引名称标记 pandas 标头
- oracle - Oracle:如何将 char(16) 转换为日期
- android - Android QtService 不会在单独的进程上调用像 onCreate 这样的覆盖方法