gpt4 book ai didi

r - 安装 : cannot coerce type 'closure' to vector of type 'character' 时出错

转载 作者:行者123 更新时间:2023-12-03 20:14:47 24 4
gpt4 key购买 nike

尝试通过键入以下内容来安装所有与 Rattle 相关的软件包:

install.packages(rattle, dependencies = c("Depends","Suggests"))

得到了这个
Installing package into ‘C:/Users/Hooman/Documents/R/win-library/3.1’
(as ‘lib’ is unspecified)
Error in as.character(x) :
cannot coerce type 'closure' to vector of type 'character'

我已经在该文件夹中安装了两个单独的软件包并且没有问题。

最佳答案

@BenBolker 发布了一个答案作为评论,也许是因为他希望你能盯着你的代码和他的代码之间的差异,并获得一个禅意时刻。他还认为,作为谦虚的绅士,这太简单了,不值得任何赞成。所以我感到内疚,任何赞成票都是他的而不是我的。我现在将尝试合法地赢得任何赞成票。

您收到错误的原因是 install.packages函数需要一个字符对象,而你给了它不带引号的表达式 rattle . Ben 使用单元素字符向量 "rattle" ,从而符合函数的要求。与某些函数不同 install.packages不具备提供其第一个论点的“非标准评估”的能力。

R 有时是一种有趣的语言,具有一些不一致的评估约定。有几个函数可以提供不带引号的表达式并将其自动转换为字符。该列表包括 library ,以及它的表亲,require ,以及 help , subset , 和 $ .这些被知识渊博的用户认为是“非标准”评估,并且他们可能在编程中存在缺陷。错误消息告诉您,R 试图将它“认为”的语言对象、闭包(松散地是 R 和 LiSP 的函数术语)转换为字符,但没有成功。您可以在此控制台交互中看到相同的错误:

> as.character(mean)
Error in as.character(mean) :
cannot coerce type 'closure' to vector of type 'character'

如果你看 library Ben 提到的函数并向下滚动经过内部函数定义,您最终会获得库避免该错误的机制:
if (!character.only) 
package <- as.character(substitute(package))

这也可以避免错误,我故意将其用作示例:
> as.character(substitute(mean))
[1] "mean"
substitute函数正在对被视为闭包的语言元素进行处理,结果对象的 R“名称”具有 as.character方法。

关于r - 安装 : cannot coerce type 'closure' to vector of type 'character' 时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23846918/

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