r - 为什么我在 R 中得到“错误:`...` 不是空的”?
问题描述
我是一个 Python 人,他被要求运行一些返回以下错误的 R 代码:
错误:
...
不为空。我们检测到这些有问题的论点:
..1
这些点仅存在以允许将来扩展并且应该为空。你是否错误地指定了一个论点?运行
rlang::last_error()
以查看错误发生的位置。
我可以将代码简化为这个 MWE:
library(dplyr)
x <- data.frame(1)
x %>% ungroup(x)
我不知道第 3 行应该做什么,但它在我的系统(dplyr 1.0.0)上失败,同时使用 dplyr 0.8.5 或在https://rdrr.io/snippets/上打印
X1
1 1
我尝试了很多事情,但没有成功:
update.packages(ask = FALSE)
remove.packages("dplyr")
install.packages("dplyr")
这里发生了什么?我如何(帮助)调查?
更新:options(error = recover)
给了我这个:
1: x %>% ungroup(x)
2: withVisible(eval(quote(`_fseq`(`_lhs`)), env, env))
3: eval(quote(`_fseq`(`_lhs`)), env, env)
4: eval(quote(`_fseq`(`_lhs`)), env, env)
5: `_fseq`(`_lhs`)
6: freduce(value, `_function_list`)
7: withVisible(function_list[[k]](value))
8: function_list[[k]](value)
9: ungroup(., x)
10: ungroup.data.frame(., x)
11: ellipsis::check_dots_empty()
12: action_dots(action = action, message = "`...` is not empty.", dot_names = n
13: action(message, .subclass = c(.subclass, "rlib_error_dots"), ...)
14: signal_abort(cnd)
另一个更新:完整的代码行,非最小化,如果重要的话,是
screenData <- mutate_if(screenData, is.character, as.factor) %>% ungroup(screenData)
也许这比我的 MWE 更有意义。
另一个:dput(screenData)
返回
structure(list(wellID = "A001", rowID = "A0", colID = "01", value = 0,
fileName = "V3_Prob5_p1", batch = structure(NA_integer_, .Label = character(0), class = "factor"),
sampleID = NA, patientID = NA, name = NA_character_, concentration = NA_real_,
wellType = "sample"), row.names = c(NA, -1L), class = c("tbl_df",
"tbl", "data.frame"))
最后,我向代码的维护者提出了一个问题,请参阅https://github.com/lujunyan1118/DrugScreenExplorer/issues/1,并与dplyr
,请参阅https://github.com/tidyverse/dplyr/issues/5368
解决方案
管道%>%
是语法糖。这意味着“获取管道左侧的对象并将其用作管道右侧函数的第一个参数”。
因此,您可以说ungroup(x)
or x %>% ungroup()
,两者都有效,但x %>% ungroup(x)
同时尝试取消对名为的 data.frame 的分组,并从名为的 data.frame 的分组中x
删除一个名为的变量。但 data.frame不包含名为 的变量。因此问题。x
x
x
x
你得到的代码本质上是错误的(或者至少写得令人困惑)。
更新
您的dput
.
screenData %>% ungroup(screenData)
相当于ungroup(screenData, screenData)
第一个screenData
是要取消分组的 data.frame,第二个是要从分组中删除的 data.frame 中的变量名称。但 data.framescreenData
不包含名为screenData
. 这就是你得到错误的原因。
你得到的代码是明确不正确的。
它在以前的版本中运行没有错误的事实dplyr
纯属偶然。
推荐阅读
- google-apps-script - 如何使用辅助表存储电子邮件,根据任务状态向特定人员发送自动电子邮件?
- swift - 在 Swift 中从 UIView 创建 PDF
- pandas - pyspark 中的 defaultdict 实现
- javascript - 通过Id nodejs获取多个元素
- sql - 我有这个错误 ORA-00917:缺少逗号?
- reactjs - 在 apollo 中取消对 refetch 的查询
- javascript - 如何将变量从服务器js文件传递到另一个
- batch-file - 获取电脑扩展槽的卡信息
- git - .gitignore 错过了 NetBeans 11.x 中的尾随新行
- python - 如果在 __init__ 中未使用,则类 ser 端口为无