如何将源代码包含到R中的函数中?
我编写了一个函数并保存在一个.R文件中。 我想在修改另一个.R文件时将代码源代码放在该文件中 例如,我想要的是: 文件1代码:如何将源代码包含到R中的函数中?,r,function,R,Function,我编写了一个函数并保存在一个.R文件中。 我想在修改另一个.R文件时将代码源代码放在该文件中 例如,我想要的是: 文件1代码: func <- function(x=x) {sum(x)} func试试source(“file1.R”,local=TRUE)。这将使求值发生在函数的范围内,而不是(默认行为)工作区的范围内 但是,正如您目前编写的那样,它仍然不起作用,因为您的file1正在定义一个函数,而不是对它进行求值 要实现您想要的行为,您需要以下内容: ## file1.R ## s
func <- function(x=x) {sum(x)}
func试试source(“file1.R”,local=TRUE)
。这将使求值发生在函数的范围内,而不是(默认行为)工作区的范围内
但是,正如您目前编写的那样,它仍然不起作用,因为您的file1
正在定义一个函数,而不是对它进行求值
要实现您想要的行为,您需要以下内容:
## file1.R ##
s <- sum(x)
## file2.R ##
func2 <- function(x) {
source("file1.R", local=TRUE)
return(s)
}
func2(x=c(2,3))
##file1.R##
请注意,这些解决方案的一个显著优点是,它们不会在每次运行func2
时重新读取file1.R
1)source into workspace源调用将定义func,然后我们将func2
定义为与func
相同,最后我们可以选择删除func
。此时,我们可以运行func2
source('file1.R')
func2 <- func
rm(func) # optional
func2(x=c(2:3))
3)模块包
从安装模块软件包(此软件包提供了介于源代码
和完整R软件包之间的中间部分)后,请尝试以下操作:
# devtools::install_github('klmr/modules')
library(modules)
file1 <- import("file1")
func2 <- file1$func
func2(3:4)
#devtools::install_github('klmr/modules'))
图书馆(模块)
file1现在,您的代码创建了一个函数,该函数源于“file1.R”,而不考虑x输入。您需要告诉函数也运行旧函数
func2 <- function(x){
source('file1.R',local=TRUE)
func(x)
}
func2另一种选择是,如果您在其他函数中查找文件,则可能是时候开始将这些内容移动到包中了。
# devtools::install_github('klmr/modules')
library(modules)
file1 <- import("file1")
func2 <- file1$func
func2(3:4)
func2 <- function(x){
source('file1.R',local=TRUE)
func(x)
}