gpt4 book ai didi

r - 无法找出 lapply 中的错误

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

几周前我是一名初学者,我正在尝试学习 apply 系列。不知道如何使用 lapply,这很令人抓狂。是的,我查了 ?lapply 和包括 R in a nutshellR cookbook 在内的几本书,但仍然无法弄清楚我做错了什么。

lapply(X = c("ggplot2", "gtable", "grid"), library)
## Error: 'package' must be of length 1
lapply(X = c("ggplot2", "gtable", "grid"), FUN = function(x) library(x))
## Error: there is no package called 'x'
lapply(X = c("ggplot2", "gtable", "grid"), FUN = library)
## Error: 'package' must be of length 1
x = c("ggplot2", "gtable", "grid")
lapply(x, library)
## Error: 'package' must be of length 1
lapply(x, FUN = function(x) library(x))
## Error: there is no package called 'x'

最佳答案

您的 lapply() 本身没有任何问题,但问题在于 library() 以稍微特殊的方式评估其参数。

这意味着您需要使用

library(pkg.name, character.only=TRUE)

这在 ?library 的帮助中相当模糊:

package, help
the name of a package, given as a name or literal character string, or a character string, depending on whether character.only is FALSE (default) or TRUE).



这意味着如果您向 library() 提供字符串,则必须将 character.only 设置为 TRUE。

所以,试试这个:
lapply(x, library, character.only=TRUE)

那么您可能想要调用 require() 而不是 library() ,并使用 sapply 简化结果:
sapply(x, require, character.only=TRUE)
ggplot2 gtable grid
TRUE TRUE TRUE

不同之处在于 require() 返回单个逻辑值,指示包是否加载成功。

关于r - 无法找出 lapply 中的错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15273635/

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