【问题标题】:Error in trying to use the group_by and summarise functions with dplyr in R尝试在 R 中使用 dplyr 使用 group_by 和汇总函数时出错
【发布时间】:2021-08-13 01:56:10
【问题描述】:

我一直在尝试在 R 中使用 dplyr 总结一组数据。这是我一直在使用的代码,直到最近它一直运行良好。

library(tidverse);library(curl)
data<-read.csv(curl("https://raw.githubusercontent.com/megaraptor1/mydata/main/data.csv"))
data2<-data %>%
  group_by(e.taxon) %>%
  summarise(across(c(e.hbl,e.bm), weighted.mean, e.N), 
            N = sum(e.N))

“错误:summarise() 输入 ..1 有问题。 x 'x' 和 'w' 必须具有相同的长度 i 输入..1(function (.cols = everything(), .fns = NULL, ..., .names = NULL) ...。 i 错误发生在第 2 组:e.taxon = "Abrocoma_bennettii"。"

现在我知道了此错误的所谓原因:其中两列的长度不同或缺少值。但是,当我检查哪些列产生了错误时,它表示所有变量都具有相同数量的条目(即没有丢失数据)。

length(data$e.taxon)
length(data$e.hbl)
length(data$e.bm)
length(data$e.N)

我尝试搜索此错误消息以查看其背后是否有更多我可以使用的信息,但我找不到任何东西。真正奇怪的是这段代码在一些未知的更改之前运行良好,并且由于文件的设置方式,我无法轻松识别可能产生这种情况的新更改的位置(该示例是更大共享数据集的一部分)。我试图弄清楚为什么当所有数据都有完整的案例时 R 会返回此错误。

【问题讨论】:

  • 你能显示dplyr和你的R version的版本
  • 您是否加载了任何其他屏蔽 dplyr 中的功能的包
  • @akrun 我有 dplyr 1.0.5 和 R 4.0.4。我加载了 dplyr,只有 dplyr,但我仍然收到错误。
  • 我使用了 dplyr 1.0.6 和 R 4.1.0

标签: r dplyr summarize


【解决方案1】:

它适用于新版本的dplyr1.0.6R 4.1.0 上测试)

library(dplyr)
data %>%
   group_by(e.taxon) %>%
   summarise(across(c(e.hbl,e.bm), weighted.mean, e.N), N = sum(e.N))
# A tibble: 2,004 x 4
   e.taxon               e.hbl    e.bm     N
   <chr>                 <dbl>   <dbl> <int>
 1 Abrawayomys_ruschii   126.     54.7     3
 2 Abrocoma_bennettii    190.    200       9
 3 Abrocoma_cinerea      149.     86.3     5
 4 Abrothrix_andinus      83.7    16.7    34
 5 Abrothrix_illuteus    121.     42      11
 6 Abrothrix_longipilis  105.     32.3    62
 7 Abrothrix_olivaceus    87.0    19.4    45
 8 Acinonyx_jubatus     1278.  52163.      7
 9 Acomys_cahirinus      105      41.1     2
10 Acomys_sp.             98.5    67       2
# … with 1,994 more rows

由于我们传递的是参数而不是 lambda 函数,因此使用名称可能会更好,即w = e.N(尽管在这里并不重要,因为第二个参数是 w

【讨论】:

    猜你喜欢
    • 2016-08-18
    • 2020-11-28
    • 2021-01-19
    • 1970-01-01
    • 2019-01-25
    • 1970-01-01
    • 1970-01-01
    • 2021-12-15
    • 2020-03-22
    相关资源
    最近更新 更多