Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R函数从另一个文件中包含时是否需要包声明?_R_Aggregate_Packages - Fatal编程技术网

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

我正在用R编写一些数据操作脚本,最后我决定创建一个外部.R文件并从那里调用我的函数。但是当我尝试调用一些函数时,它开始给我带来一些问题。简单的例子:

这一个工作没有问题:

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
,并告诉我这是否会减轻您的错误。

是。让它成为源代码解决了这个问题。顺便说一下,谢谢你提供的额外信息。让它成为源代码解决了这个问题。顺便说一下,谢谢你提供的额外信息。谢谢。源代码解决了这个问题。谢谢。让它成为源代码解决了这个问题。