从另一个R文件执行一组行
我不确定这是否可能,但我正在寻找类似于在R脚本中定义区域的东西。我想从另一个R脚本执行一组预先指定的行。我知道我可以使用从另一个R文件执行一组行,r,R,我不确定这是否可能,但我正在寻找类似于在R脚本中定义区域的东西。我想从另一个R脚本执行一组预先指定的行。我知道我可以使用source(filename)运行整个文件,但是我不想运行整个文件,我只想在文件中运行几行 我是否可以在文件中定义区域或任何类似内容,然后从另一个文件执行它 任何帮助都将不胜感激。考虑到行号在编辑过程中可以很容易地更改,这听起来不是一个超级安全的想法。似乎最安全的做法是将源代码较大的文件拆分为更小的部分,以便更安全地包含和运行。但你可以这样做 sourcePartial &l
source(filename)
运行整个文件,但是我不想运行整个文件,我只想在文件中运行几行
我是否可以在文件中定义区域
或任何类似内容,然后从另一个文件执行它
任何帮助都将不胜感激。考虑到行号在编辑过程中可以很容易地更改,这听起来不是一个超级安全的想法。似乎最安全的做法是将源代码较大的文件拆分为更小的部分,以便更安全地包含和运行。但你可以这样做
sourcePartial <- function(fn, skip=0, n=-1) {
lines <- scan(fn, what=character(), sep="\n", skip=skip, n=n, quiet=TRUE)
tc <- textConnection(lines)
source(tc)
close(tc)
}
将运行“test.R”中的第5-15行这听起来不是一个超级安全的想法,因为在编辑过程中行号可以很容易地更改。似乎最安全的做法是将源代码较大的文件拆分为更小的部分,以便更安全地包含和运行。但你可以这样做
sourcePartial <- function(fn, skip=0, n=-1) {
lines <- scan(fn, what=character(), sep="\n", skip=skip, n=n, quiet=TRUE)
tc <- textConnection(lines)
source(tc)
close(tc)
}
将运行“test.R”中的第5-15行如果您担心一旦您向上游添加新行,感兴趣的区域将发生变化,那么MrFlick回答的替代(或稍微修改)版本将如下所示:
sourcePartial <- function(fn,startTag='#from here',endTag='#to here') {
lines <- scan(fn, what=character(), sep="\n", quiet=TRUE)
st<-grep(startTag,lines)
en<-grep(endTag,lines)
tc <- textConnection(lines[(st+1):(en-1)])
source(tc)
close(tc)
}
sourcePartial如果您担心一旦您向上游添加新行,感兴趣的区域将发生变化,那么MrFlick回答的替代(或稍加修改)版本将被解读为:
sourcePartial <- function(fn,startTag='#from here',endTag='#to here') {
lines <- scan(fn, what=character(), sep="\n", quiet=TRUE)
st<-grep(startTag,lines)
en<-grep(endTag,lines)
tc <- textConnection(lines[(st+1):(en-1)])
source(tc)
close(tc)
}
sourcePartial我想,如果海报愿意将源文件分成带有通用(注释)标题标签的部分,比如#header:Region_4
,你可以写一些更一般的东西,你可以通过一次阅读找到带有标题的行,然后根据名称或序列号选择目标部分。感谢你的回答,我认为广义版本更好。如果这是你想要的,最好在原始问题中描述它。另一个版本对文件内容做了更多的假设。我想,如果海报愿意将源文件分成带有通用(注释)标题标签的部分,比如#header:Region_4
,你可以写一些更一般的东西,你可以通过一次阅读找到带有标题的行,然后根据名称或序列号选择目标部分。感谢你的回答,我认为广义版本更好。如果这是你想要的,最好在原始问题中描述它。另一个版本对文件内容做了更多的假设。似乎你应该编写R函数和构建包。似乎你应该编写R函数和构建包。这非常有效,正是我所寻找的,非常感谢。这非常有效,正是我所寻找的,非常感谢。