【问题标题】:What is causing this cryptic error message in bind_rows?是什么导致了 bind_rows 中出现这个神秘的错误消息?
【发布时间】:2021-07-04 04:34:01
【问题描述】:

我有下面提到的数据框,我正在尝试与另一个数据框绑定

X_df
   1  2
1 18 NA
2  3 NA
3  6 NA
4  8  8

y_df
 1  2 
35  8 

y_df 实际上是 x 中每一列的总和。我一直在尝试使用 bind_rows 绑定这两个数据帧。它向我显示以下错误。我可以就如何纠正它获得一些建议。我对 R 比较陌生

*Error in (function (cond)  : 
  error in evaluating the argument 'x' in selecting a method for function 'as.data.frame': Can't combine `..1$1` <table> and `..2$1` <double>*

提前致谢

【问题讨论】:

标签: r dplyr


【解决方案1】:

我尝试使用您提到的相同功能 bind_rows 运行:

x_df
  X1 X2
1 18 NA
2  3 NA
3  6 NA
4  8  8
y_df
  X1 X2
1 35  8
x_df %>% bind_rows(y_df)
  X1 X2
1 18 NA
2  3 NA
3  6 NA
4  8  8
5 35  8

另一种方法:

x_df %>% bind_rows(x_df %>% summarise(across(everything(), ~ sum(., na.rm = TRUE))))
  X1 X2
1 18 NA
2  3 NA
3  6 NA
4  8  8
5 35  8

【讨论】:

  • 我的 y_df 没有行标题 (1),就像您在上面所做的那样 x 有。我认为这是造成问题的原因。知道如何纠正它吗?
  • 您不必使用y_df,正如您所提到的,它只是x_df 数据框的列总和。您可以使用第二种方法。这行得通吗?
【解决方案2】:

我建议不要将y_df 用于总计,而是使用janitor::adorn_totals() 之类的东西来实际计算列的总计。

library(janitor)
library(tidyverse)
X_df %>%
  tibble::rowid_to_column() %>%
  janitor::adorn_totals(where = "row")

#    id X1 X2
#     1 18 NA
#     2  3 NA
#     3  6 NA
#     4  8  8
# Total 35  8

【讨论】:

    【解决方案3】:

    尝试使用rbind

    result <- rbind(X_df, y_df)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-11-11
      • 1970-01-01
      • 2014-08-14
      • 2015-07-13
      • 2011-08-13
      • 2012-10-06
      • 2014-11-09
      • 1970-01-01
      相关资源
      最近更新 更多