如何解决如何运行由 R 中的部分定义的代码的特定部分
我是 R 和基本编程语言本身的新手。对于大学的一个项目,我需要使用 R 设计一个阶乘计划。为此,我编写了一个主脚本,使用“####”将其分成几个部分。由于设计实验的迭代过程,某些部分会重新运行多次。为了获得特定的文件输出,必须以非常特定的顺序运行不同的部分(即要获得输出文件:“file.csv”,您必须运行:#1 #2 #7.1 #4 等等.. .).
我制作了一个包含所有有序输入订单的表格,以获得特定的输出。我想知道是否可以编写一个简短的脚本,以正确的顺序运行这些部分,就像我按照表格手动运行这些部分一样。
我正在想象这样的事情:
#get file.csv####
#magic code that does the following:
run #1
run #2
run #7.1
run #4
#get file2.csv####
run #1
run #2
run #7.2
run#4
#get plot1.svg####
run #3
run #6
run #2
等等......所有部分都被命名(即##########3.6.1 vollständiges Modell nach BW#####。)
我找了很长时间的解决方案,但还没有找到合适的解决方案。我发现理论上可行的一个简单解决方案是:
source_lines <- function(file,lines){
source(textConnection(readLines(file)[lines]))
}
所以我会用它来编写这样的代码:
#get file.csv####
source_lines("filename",(4:27)) #suppose #1Section is from line 4 to 27
source_lines("filename",(40:89))
...
我遇到的问题是,当我已经定义了部分时,使用实际行号似乎不稳定,特别是因为我确定代码尚未最终确定。所以行号更改将成为事情。我发现的有关该问题的其他一些代码:
source2 <- function(file,start,end,...) {
file.lines <- scan(file,what=character(),skip=start-1,nlines=end-start+1,sep='\n')
file.lines.collapsed <- paste(file.lines,collapse='\n')
source(textConnection(file.lines.collapsed),...)
}
或
rs = local({
last_file = NULL
function (filename,from,to = if (missing(from)) -1 else from) {
if (missing(filename)) filename = last_file
stopifnot(! is.null(filename))
stopifnot(is.character(filename))
force(to)
if (missing(from)) from = 1
source_lines = scan(filename,what = character(),sep = '\n',skip = from - 1,n = to - from + 1,encoding = 'UTF-8',quiet = TRUE)
result = withVisible(eval.parent(parse(text = source_lines)))
last_file <<- filename # Only save filename once successfully sourced.
if (result$visible) result$value else invisible(result$value)
}
})
但在我看来,它们具有相同的固有行号问题。有什么办法可以通过节的名称而不是行号来获取源代码?
我希望一切都是可以理解的,非常感谢您的帮助。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。