基于变量-R注释/取消注释行

问题描述 投票:0回答:2

有这样的R代码:

for (i in 1:length(DV)){names(DV[[i]])<-paste("DV", substr(names(P2[[1+10*(i-1)]]),12,19), sep="_")}
for (i in 1:length(DW)){names(DW[[i]])<-paste("DW", substr(names(P2[[1+10*(i-1)]]), 12,19), sep="_")}

如何根据变量自动注释/取消注释这些行。我想多次重新运行代码,并且对于每次迭代,它应该包括(或不包括)代码的某些行。例如:

var<-TRUE

if (var) then {comment/uncomment lines 39:43}
r if-statement comments
2个回答
1
投票

通常,这样的功能是通过在执行脚本时读取的配置文件以及if()语句而不是注释块来实现的。我们可以用文件读取为textConnection()来模拟这个。然后,我们将使用assign()将逻辑值分配给对象,并使用它来控制后续代码块的执行。

# read config file and use it to process data
# 
rawData <- "environment,parameter,value
dev,debug,TRUE
test,debug,TRUE
prod,debug,FALSE
"

configParms <- read.csv(textConnection(rawData),header=TRUE)
# assign the value from the data frame for DEV environment to an object 
assign("debugOn",configParms[configParms$environment =="dev" & 
                             configParms$parameter == "debug","value"])

debugOn

if(debugOn){
     # execute this code block
     message("Entered debug code block")
}
message("passed debug code block")

......和输出:

> debugOn
[1] TRUE
> if(debugOn){
+      # execute this code block
+      message("Entered debug code block")
+ }
Entered debug code block
> message("passed debug code block")
passed debug code block
> 

0
投票

虽然@Len Greski的答案更具技术性,我相信这是一种更专业的方法,但我只想弄清楚如何以一种简单的方式解决我的问题。

我使用了if语句,而不是使用commnet / uncomment线来避免(或不)运行它们。

var<-TRUE

if (var) {
for (i in 1:length(DV)){names(DV[[i]])<-paste("DV", substr(names(P2[[1+10*(i-1)]]),12,19), sep="_")}
for (i in 1:length(DW)){names(DW[[i]])<-paste("DW", substr(names(P2[[1+10*(i-1)]]), 12,19), sep="_")}
}

就这样。如果TRUE它将完成,如果FALSE它不会。

© www.soinside.com 2019 - 2024. All rights reserved.