首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法找出lapply中的错误

无法找出lapply中的错误
EN

Stack Overflow用户
提问于 2013-03-07 22:22:44
回答 2查看 3.1K关注 0票数 4

我是一个初学者,几周前刚学会了R,正在尝试学习apply家族。不知道如何使用lapply,它让人抓狂。是的,我查阅了?lapply和包括R in a nutshellR cookbook在内的几本书,但仍然找不出我做错了什么。

代码语言:javascript
复制
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'
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-03-07 22:31:52

您的lapply()本身没有什么问题,但问题是library()以一种稍微特殊的方式计算它的参数。

这意味着您需要使用

代码语言:javascript
复制
library(pkg.name, character.only=TRUE)

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

包,帮助

包的名称,以名称、文字字符串或字符串的形式给出,具体取决于character.only是FALSE (默认值)还是TRUE。

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

所以,试试这个:

代码语言:javascript
复制
lapply(x, library, character.only=TRUE)

然后,您可能希望调用require()而不是library(),并使用sapply简化结果

代码语言:javascript
复制
sapply(x, require, character.only=TRUE)
ggplot2  gtable    grid 
   TRUE    TRUE    TRUE 

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

票数 10
EN

Stack Overflow用户

发布于 2013-03-07 22:29:38

例如,请尝试执行以下操作:

代码语言:javascript
复制
 lapply(X = c("ggplot2", "gtable", "grid"), library,character.only =T)

请参阅?library

包,帮助根据character.only是FALSE (默认值)还是TRUE(真),将包的名称指定为名称、文字字符串或字符串。

因此,当您尝试以下示例时:

代码语言:javascript
复制
lapply(X = c("ggplot2", "gtable", "grid"), FUN = function(x) library(x))
## Error: there is no package called 'x'

你会得到一个错误,因为library将x作为参数,并尝试加载name = 'x‘的包

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15273635

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档