我已经成功使用了以下代码一段时间,但是由于某种原因,现在它坏了。 尽管我已经加载了和以前一样的软件包。同时,对R或dplyr版本没有任何更改。
看来dplyr的top_n()函数不再适用于管道。
请问有人有解决此错误消息的经验吗?任何帮助或提示都将受到高度赞赏。
R:3.6.1; dplyr:0.8.3df %>% group_by(ID) %>% top_n(1,MRP)
跟踪:
Error in as.list(x) : trying to get slot "matsin" from an object (class "quosures") that is not an S4 object
20.
as.list(x)
19.
splice(dot_call(capture_dots, frame_env = frame_env, named = named, ignore_empty = ignore_empty, unquote_names = unquote_names, homonyms = homonyms, check_assign = check_assign))
18.
FUN(X[[i]], ...)
17.
lapply(.x, .f, ...)
16.
map(syms, function(sym) { if (!is_symbol(sym)) { abort("Inputs to capture must be argument names") } ...
15.
endots(call = sys.call(), frame_env = parent.frame(), capture_arg = rlang_enquo, capture_dots = rlang_quos_interp, named = .named, ignore_empty = .ignore_empty, unquote_names = .unquote_names, homonyms = .homonyms, check_assign = .check_assign)
14.
enquos(...)
13.
quo_reduce(..., .op = op)
12.
all_exprs(!!!dots, .vectorised = TRUE)
11.
filter.tbl_df(x, top_n_rank({ { n } ...
10.
filter(x, top_n_rank({ { n } ...
9.
top_n(., 1, MRP)
8.
function_list[[k]](value)
7.
withVisible(function_list[[k]](value))
6.
freduce(value, `_function_list`)
5.
`_fseq`(`_lhs`)
4.
eval(quote(`_fseq`(`_lhs`)), env, env)
3.
eval(quote(`_fseq`(`_lhs`)), env, env)
2.
withVisible(eval(quote(`_fseq`(`_lhs`)), env, env))
1.
df %>% group_by(ID) %>% top_n(1,MRP)
答案 0 :(得分:0)
data.table的解决方法:
as.data.table(df)[,tail(.SD,1),by=ID]
答案 1 :(得分:0)
由于软件包ycinterextra
导出了自己的as.list
,因此遇到了同样的问题。
可能的快速修复:
library(ycinterextra)
library(dplyr)
as.list <- base::as.list
在包导入语句后从as.list
恢复base
。