我发现自己一直在使用install.package
功能,特别是当我必须尝试别人的代码或运行示例时。
我正在编写一个安装和加载包的函数。我尝试了以下但是没有用:
inp <- function(PKG)
{
install.packages(deparse(substitute(PKG)))
library(deparse(substitute(PKG)))
}
当我输入inp(data.table)
时,它会显示
Error in library(deparse(substitute(PKG))) :
'package' must be of length 1
在这种情况下,如何将库名称作为参数传递?
如果有人也可以向我发送有关将任何类型的对象作为参数传递给R
中的函数的信息,我将不胜感激。
答案 0 :(得分:8)
library()
抛出错误,因为它默认接受字符或作为其第一个参数。它在第一个参数中看到deparse(substitute(PKG))
,并且在找到它时可以理解地找不到该名称的包。
设置character.only=TRUE
,告诉library()
期望字符串作为其第一个参数,应该解决问题。试试这个:
f <- function(PKG) {
library(deparse(substitute(PKG)), character.only=TRUE)
}
## Try it out
exists("ddply")
# [1] FALSE
f(plyr)
exists("ddply")
# [1] TRUE