gpt4 book ai didi

r - 错误 : Value of SET_STRING_ELT() must be a 'CHARSXP' not a 'character' in dplyr group_by

转载 作者:行者123 更新时间:2023-12-04 13:05:25 25 4
gpt4 key购买 nike

使用 group_by 时出现 super 随机错误在 dplyr如下

dat %>% group_by(variable) %>% mutate(score = score[1])
哪里 datdata.frame带因子/字符列 variablescore是双。我得到的错误是这样的:
Value of SET_STRING_ELT() must be a 'CHARSXP' not a 'character'
  • 无论 variable 的名称如何,它都会发生.
  • 无论计算如何(例如 score[1] )。
  • 我可以按任何其他变量分组。
  • 这两个变量看起来都不错。我几乎可以用 variable 进行各种计算或 score .变量只有重复条目“arima”和“prophet”,没有NA s。
  • 此外,错误消息仅有时显示。大多数情况下,R session 只是由于 fatal error 而终止。

  • 这让我疯狂...
    我用谷歌搜索错误并找不到好的帮助,除了缩小范围,这就是我所做的,即一个简单的 group_by计算。此外,我重新启动了 R session ,重新启动了计算机,更新了我的 R 版本和 dplyr包,现在是 1.07 版。
    我在 Ubuntu 20.04.3 LTS 上使用 R 版本 4.1.1。
    关于可能产生此错误的任何想法?
    编辑
    我无法提供带有模拟数据的可重现样本,因为它只发生在特定数据上。在这里,我上传了导致错误 https://filebin.net/9pywc544hsmgm2p3 的数据
    然后运行以下代码
    A <- readRDS("dat.rds") %>% 
    group_by(variable) %>%
    mutate(score = score[1])
    有趣的是,如果您按 A[1:nrow(A), ] 分组而不是 A它有效,尽管它是相同的数据。
    编辑 2:
    我现在可以运行几次计算,但在某些时候,我总是遇到相同计算的 fatal error 。我觉得这似乎特定于我的系统。所以可能我必须重新安装所有东西。
    编辑 3:
    as.numeric(score)解决了这个问题。所以似乎分数的名称属性出了点问题。但是,它们看起来并不可疑,并且都具有相同的名称,即“new_confirmed10”。

    最佳答案

    这是实现 R 函数的 C 代码中的内部错误。它永远不应该出现在用户代码中。这绝对是某个地方的错误。您可以通过运行 traceback() 稍微缩小位置范围。看到它后立即。这将列出发生错误时所有处于事件状态的 R 函数,并可能给出调用错误 C 代码的 R 函数的位置。
    请把一个可重现的例子放在一起(即给我们一种构造 dat 的方法,以便我们可以在我们的系统上重现它)。 SO 上的某个人将能够找到错误的原因,并且可能会告诉您一个解决方法,或者告诉代码的作者如何修复它。
    如果您不能这样做,则不太可能有人能够帮助您,但这里有一些一般性建议:

  • 不要使用仅在 Github 上的包或包版本,坚持使用通常经过更好测试的 CRAN 包。
  • 如果你正在开发你自己的 C/C++ 代码并且它以某种方式涉及到这里,你需要使用 gdblldb做C级调试。如果您以前没有使用过这些,那并不容易。

  • 编辑添加:
    在检查了 dat.rds 的上传版本后文件,我想我已经发现了部分问题。运行此代码:
    dat <- readRDS("dat.rds")
    table(names(dat$score))
    我可以看到 dat$score 的名字是 "new_confirmed10" 的 744 份副本.重名是不寻常的,但合法的。然而, dat$score的长度是 1488(与 dat 的行数相同),据我所知,名称的数量与对象的长度不同是不合法的。 (如果您只为某些元素分配名称,则应该在其他元素上获得名称 NA。)
    当您运行代码时,mutate 调用中的某些内容会崩溃,因为它假定对象格式良好,但事实并非如此。所以这不是 dplyr 中的错误,但我认为这是在 dat.rds 中创建对象的任何代码中的错误。 .你有任何关于它是如何创建的记录吗?

    关于r - 错误 : Value of SET_STRING_ELT() must be a 'CHARSXP' not a 'character' in dplyr group_by,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69767054/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com