【发布时间】:2021-08-06 18:24:02
【问题描述】:
我在对因子和字符运行 dplyr::tally 时遇到问题
> data %>% dplyr::tally(true_label)
Error: Problem with `summarise()` column `n`.
ℹ `n = sum(true_label, na.rm = TRUE)`.
x ‘sum’ not meaningful for factors
Run `rlang::last_error()` to see where the error occurred.
> rlang::last_error()
<error/dplyr_error>
Problem with `summarise()` column `n`.
ℹ `n = sum(true_label, na.rm = TRUE)`.
x ‘sum’ not meaningful for factors
Backtrace:
1. data %>% dplyr::tally(true_label)
12. base::.handleSimpleError(...)
13. dplyr:::h(simpleError(msg, call))
Run `rlang::last_trace()` to see the full context
> data %>% dplyr::tally(as.character(true_label))
Error: Problem with `summarise()` column `n`.
ℹ `n = sum(as.character(true_label), na.rm = TRUE)`.
x invalid 'type' (character) of argument
Run `rlang::last_error()` to see where the error occurred.
> rlang::last_error()
<error/dplyr_error>
Problem with `summarise()` column `n`.
ℹ `n = sum(as.character(true_label), na.rm = TRUE)`.
x invalid 'type' (character) of argument
Backtrace:
1. data %>% dplyr::tally(as.character(true_label))
10. base::.handleSimpleError(...)
11. dplyr:::h(simpleError(msg, call))
Run `rlang::last_trace()` to see the full context.
这也失败了:
> data %>% group_by(true_label) %>% summarise(n_label = n())
Error: `n()` must only be used inside dplyr verbs.
Run `rlang::last_error()` to see where the error occurred.
替代示例:
diamonds %>% tally(cut)
diamonds %>% group_by(as.factor(cut)) %>% summarise(n_label = n())
我相信summarise 是一个 dplyr 动词,不是吗?
计算因子和字符的官方方法是什么?
dplyr 版本 1.0.7
【问题讨论】:
-
如果您包含一个简单的reproducible example,其中包含可用于测试和验证可能解决方案的示例输入和所需输出,则更容易为您提供帮助。
data是 data.frame 还是 tibble?还是只是一个字符向量?你目前加载了哪些包?也许你已经加载了一个重新定义summarise的包 -
diamonds %>% group_by(as.factor(cut)) %>% summarise(n_label = n())对我来说很好,没有任何错误。你有plyr加载吗?尝试使用dplyr::summarise。你也可以dplyr::count(diamonds, cut)