R函数从另一个文件中包含时是否需要包声明?
我正在用R编写一些数据操作脚本,最后我决定创建一个外部.R文件并从那里调用我的函数。但是当我尝试调用一些函数时,它开始给我带来一些问题。简单的例子: 这一个工作没有问题:R函数从另一个文件中包含时是否需要包声明?,r,aggregate,packages,R,Aggregate,Packages,我正在用R编写一些数据操作脚本,最后我决定创建一个外部.R文件并从那里调用我的函数。但是当我尝试调用一些函数时,它开始给我带来一些问题。简单的例子: 这一个工作没有问题: change_column_names <- function(file,new_columns,seperation){ new_data <- read.table(file, header=TRUE, sep=seperation) colnames(new_data) <- new_c
change_column_names <- function(file,new_columns,seperation){
new_data <- read.table(file, header=TRUE, sep=seperation)
colnames(new_data) <- new_columns
write.table(new_data, file=file, sep=seperation, quote=FALSE, row.names = FALSE)
}
change_column_names("myfile.txt",c("Column1", "Column2", "Cost"),"|")
它不起作用。它给了我找不到函数“read.table”
的错误。我通过将函数调用更改为util:::read.table
和util:::write.table
来修复它
但这有点令人沮丧。现在我对aggregate
函数也有同样的问题,我甚至不知道它属于哪个包
我的问题:聚合属于哪个包?我怎样才能轻松地知道函数包来自何处?有没有更干净的方法来处理这个问题 默认情况下,sys.source()
在基本环境(为空)中计算,而不是在全局环境(通常在全局环境中计算代码)中计算。您可能应该改用source()
您还可以通过查看函数的环境来了解函数的来源
environment(aggregate)
# <environment: namespace:stats>
环境(聚合)
#
默认情况下,sys.source()
在基本环境(为空)内部计算,而不是在全局环境(通常在全局环境中计算代码)。您可能应该改用source()
您还可以通过查看函数的环境来了解函数的来源
environment(aggregate)
# <environment: namespace:stats>
环境(聚合)
#
对于问题的第一部分:如果要查找函数所属的包,并且该函数工作正常,可以执行以下两种(可能更多)操作之一:
1.)访问帮助文件
?聚合
,您将在帮助文件的顶部看到它所属的包
另一种方法是在R控制台中键入aggregate
,不带任何参数:
> aggregate
function (x, ...)
UseMethod("aggregate")
<bytecode: 0x7fa7a2328b40>
<environment: namespace:stats>
聚合
函数(x,…)
使用方法(“聚合”)
命名空间是它所属的包
2.)您遇到问题的这两个函数都是基本R函数,应始终加载。我无法重现这个问题。尝试使用
source
而不是sys.source
,并让我知道这是否会减轻您的错误。对于问题的第一部分:如果您想找到函数所属的包,并且该函数工作正常,您可以做以下两件事之一(可能更多):
1.)访问帮助文件
?聚合
,您将在帮助文件的顶部看到它所属的包
另一种方法是在R控制台中键入aggregate
,不带任何参数:
> aggregate
function (x, ...)
UseMethod("aggregate")
<bytecode: 0x7fa7a2328b40>
<environment: namespace:stats>
聚合
函数(x,…)
使用方法(“聚合”)
命名空间是它所属的包
2.)您遇到问题的这两个函数都是基本R函数,应始终加载。我无法重现这个问题。尝试使用
source
而不是sys.source
,并告诉我这是否会减轻您的错误。是。让它成为源代码解决了这个问题。顺便说一下,谢谢你提供的额外信息。让它成为源代码解决了这个问题。顺便说一下,谢谢你提供的额外信息。谢谢。源代码解决了这个问题。谢谢。让它成为源代码解决了这个问题。